1

一般来说,我是 MySQL 和数据库的新手。我正在尝试创建一个 MySQL 存储过程,但不断收到一个模糊的语法错误:“您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,以获取在 'sps 附近使用的正确语法;EXECUTE stmt在第 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//
4

1 回答 1

2

您必须使用用户定义的变量来执行准备好的语句。改写为:

...
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//
于 2012-07-19T06:34:32.863 回答