web-dev-qa-db-ja.com

エラー1064(42000)を解決するには?

DROP PROCEDURE IF EXISTS proc_x;
DELIMITER #
CREATE DEFINER=`root`@`localhost`  PROCEDURE proc_x(sequel CHAR)
proc_main:BEGIN
SET @SQL = CONCAT(@sequel);
PREPARE stmt FROM @SQL;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END proc_main #

上記は、MySQLデータベースにストアドプロシージャを作成するための構文です。次のステートメントを実行すると、エラーが発生します。

CALL proc_x("INSERT  INTO tbl_rec(id,name,brnachID) values(10,'Krunal',07)");

エラー:エラー1064(42000)、93行目:SQL構文にエラーがあります。 MySQLサーバーのバージョンに対応するマニュアルで、1行目の「NULL」付近で使用する正しい構文を確認してください

誰かがそれを解決するのを手伝ってくれる?

現在、UNIXでMysqlを使用しています。

3
Krunal Patel
_(sequel CHAR)
CONCAT(@sequel)
_

@変数は、@以外の変数から完全に独立しています。

2つの修正が必要です:

  • SET @SQL = CONCAT(@sequel);-> _SET @SQL = sequel;_
  • _(sequel CHAR)_-> _(sequel VARCHAR(999))_
2
Rick James

次のようにクエリを変更します。

INSERT INTO table_name (`column1`, `column2`) values ('val1', 'val2');

列名は引用符ではなく `(タブの上の文字)で囲まれていることに注意してください

0
KayV