MySQL存储过程中的EXECUTE会出现语法错误

时间:2012-07-19 06:27:35

标签: mysql stored-procedures prepared-statement

我是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//

1 个答案:

答案 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//