我是MySQL和数据库的新手。我正在尝试创建一个MySQL存储过程,但不断得到一个模糊的语法错误: “你的SQL语法有错误;请查看与你的MySQL服务器版本相对应的手册,以便在'sps附近使用正确的语法;在第11行执行使用nn,ee,ll,cc,uu; COMMIT END'”
如果删除“PREPARE stmt ...”行,则会创建存储过程。当我重新放入线路时,我再次收到错误。
我做错了什么?
DELIMITER //
CREATE PROCEDURE `account_create` (nn VARCHAR(25),
ee BIGINT,
ll BIGINT,
cc VARCHAR(100),
uu VARCHAR(25))
BEGIN
DECLARE newId BIGINT;
DECLARE sps VARCHAR(50);
START TRANSACTION;
set sps = 'INSERT INTO account SET name=?, entity=?, ledger=?, tblname=tmpXXX, creation_date=CURDATE(), comment=?, uname=?';
PREPARE stmt FROM sps;
COMMIT;
END//
答案 0 :(得分:1)
您必须使用User Defined Variable执行预准备语句。改写为:
...
BEGIN
DECLARE newId BIGINT;
START TRANSACTION;
set @sps = 'INSERT INTO account SET name=?, entity=?, ledger=?, tblname=tmpXXX, creation_date=CURDATE(), comment=?, uname=?';
PREPARE stmt FROM @sps;
COMMIT;
END//