我正在创建一个存储过程,它将执行一个准备好的语句但是在创建过程中我得到了mysql语法错误:
MySQL说:#1064 - 你的SQL语法有错误;检查 手册,对应右边的MySQL服务器版本 在'PREPARE udpatestatut FROM @req附近使用的语法;执行 updatestatut;在第4行DEALLOCATE PREPARE upd'
我不知道我的错误是什么,所以我需要帮助来理解我做错了什么或写错了。这是我正在执行的指令。
CREATE PROCEDURE changestatut
(IN pstatut
VARCHAR(10),IN pidpost
VARCHAR(255))
COMMENT 'This procedure change the statut of activities.' NOT DETERMINISTIC NO SQL SQL SECURITY DEFINER
SET @req := concat('UPDATE compte set statut=\'', pstatut ,'\' where idpost in (', pidpost ,')');
PREPARE udpatestatut FROM @req; EXECUTE updatestatut; DEALLOCATE PREPARE updatestatut;
idpost参数是逗号分隔值...例如:1,2,3,6
答案 0 :(得分:0)
如果你的程序中有多个语句,你需要将它们包装在begin..end中,你可能也没有设置分隔符。试试这个
DROP PROCEDURE IF EXISTS changestatut;
DELIMITER $$
CREATE PROCEDURE changestatut(IN pstatut VARCHAR(10), IN pidpost VARCHAR(255))
COMMENT 'This procedure change the statut of activities.' NOT DETERMINISTIC NO SQL SQL SECURITY DEFINER
BEGIN
SET @req := concat('UPDATE compte set statut=\'', pstatut ,'\' where idpost in (', pidpost ,')');
PREPARE udpatestatut FROM @req; EXECUTE updatestatut;
DEALLOCATE PREPARE updatestatut;
END $$
DELIMITER ;