我正在与 MySQL 存储过程和PREPARE
/EXECUTE
语句对搏斗。我正在尝试运行下面的(简化的)代码,以创建一个存储过程,该存储过程将几个查询封装到一个带有回滚的事务中。我继续得到
Error Code: 1064
You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version for the right syntax
to use near 'goodID;
如果我删除事务和处理程序,代码一切正常。如果我删除该EXECUTE
语句,则可以创建该过程。
我在这里想念什么?
DELIMITER $$
USE `casc`$$
DROP PROCEDURE IF EXISTS `sp_T_MergeMemberIDs`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_T_MergeMemberIDs`(IN goodID VARCHAR(8), OUT param_sp_success TINYINT)
BEGIN
DECLARE EXIT HANDLER FOR SQLEXCEPTION ROLLBACK;
DECLARE EXIT HANDLER FOR SQLWARNING ROLLBACK;
START TRANSACTION;
SET param_sp_success = 0;
SET @SQL=
"SELECT * FROM member
WHERE memberID = ?";
PREPARE stmt FROM @SQL;
EXECUTE stmt USING goodID;
-- queries executed here using the same parameter
-- omitted for simplicity
SET param_sp_success = 1;
COMMIT;
END$$