当我没有用了变量,存储过程工作正常,但是当我执行与out变量的存储过程,这个错误显示出来:MySQL存储过程的动态选择与出可变
MySQL表示:#1327 - 未声明的变量:sp_result
代码:
CREATE DEFINER=`root`@`localhost` PROCEDURE `test3`(OUT `sp_result` INT(11), IN `sp_where_param` VARCHAR(100), IN `sp_where_value` VARCHAR(100), IN `sp_table_name` VARCHAR(100))
NO SQL
BEGIN
DECLARE tbl_id VARCHAR(100);
SET tbl_id = CONCAT(sp_table_name,'_id');
SET @temp1=CONCAT('SELECT count(',tbl_id,') INTO sp_result FROM ',sp_table_name,' WHERE ',sp_where_param,' = \'',sp_where_value,'\'');
PREPARE stmt1 FROM @temp1;
EXECUTE stmt1;
END
也许不出来变量也不起作用:(
你是对的:)。你可以告诉我什么是用户变量?当我们使用@时有什么不同? – navid
有:用户变量 - 可以在会话中访问,声明的变量 - 用DECLARE命令声明并可在BEGIN ... END子句中访问,以及'procedure/function parameters' - 可以使用仅在程序/功能中。看来参数不能用于预先准备好的语句中;所以,我建议用户变量。 – Devart
非常感谢:) – navid