首页 > 解决方案 > 在 SQL 语句中使用存储过程和多个参数删除

问题描述

我是存储过程的新手,并且当两个非唯一键列等于传递给它的两个参数时,我做了一个从表中删除的过程。

CREATE DEFINER=`root`@`localhost` 
PROCEDURE `sp_deleteTempRecords`(IN `schoolID` SMALLINT(6), IN `testID` INT(11)) 
NOT DETERMINISTIC 
CONTAINS SQL SQL SECURITY DEFINER 
BEGIN 
DELETE FROM tbl_temp WHERE tbl_temp.testID=testID AND tbl_temp.schoolID=schoolID; 
END

但是,在执行该过程时,它不会删除任何内容。如果我将 SQL 语句更改为只删除主键,那么它就可以工作(为此,我必须更改 IN 以接收 tempID,INT(11)。如果我使用 schoolID 的两个值直接在 phpMyAdmin 中输入 SQL 和testID 参数值,它运行并删除一切正常。

我之前只删除了使用主键的存储过程的记录,所以不明白为什么它不会在直接执行SQL代码时使用其他参数删除。谢谢!

标签: mysqlstored-procedures

解决方案


推荐阅读