1
我正在與MySQL存儲過程和PREPARE
/EXECUTE
語句對摔跤。我試圖運行下面的(簡化)代碼來創建一個存儲過程,它將幾個查詢封裝到一個事務中並進行回滾。我繼續得到MySQL事務中的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$$
這是它 - 感謝! – ellswrth