1

私はMySQLとデータベース全般に不慣れです。MySQLストアドプロシージャを作成しようとしていますが、あいまいな構文エラーが発生し続けます:「SQL構文にエラーがあります。MySQLサーバーのバージョンに対応するマニュアルで、'spsの近くで使用する正しい構文を確認してください;EXECUTE stmt USING nn、ee、ll、cc、uu; COMMIT END'at line 11 "

「PREPAREstmt...」という行を削除すると、ストアドプロシージャが作成されます。行を元に戻すと、再びエラーが発生します。

私が間違っているのは何ですか?

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 に答える