変数を作成して設定しようとしています:
DECLARE myId INT;
SET myId = 5;
ただし、MySQLWorkbenchで無効な構文に関する苦情が寄せられています。
'DECLARE myIdINT;'付近のSQL構文エラー
私は次の変種を試しました:
DECLARE myId INT(4);
SET myId = 5;
DECLARE @myId INT;
SET @myId = 5;
DECLARE @myId INT(4);
SET @myId = 5;
なにが問題ですか?
コメントにあるように、宣言はプロシージャや関数などのストアドプログラムでのみ有効です。ここに、ストアプロシージャとその呼び出しの例があります。
DELIMITER $$
CREATE PROCEDURE sp1 (x VARCHAR(5))
BEGIN
DECLARE xname VARCHAR(5) DEFAULT 'bob';
DECLARE myId INT;
SET myId = 5;
SELECT CONCAT(xname,' -- ',myId);
END;
$$
DELIMITER ;
call sp1('MY NAME');
私は同じ問題を経験しました。変数は、スクリプトの最初に宣言する必要があります。
DELIMITER &&
DROP PROCEDURE IF EXISTS PS_HANDLERS;
CREATE PROCEDURE PS_HANDLERS(IN ID_USER INT, OUT isError INT)
BEGIN
DECLARE USER_EMAIL VARCHAR(50);
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION
BEGIN
SET IsError = 1;
END;
SET USER_EMAIL = CONCAT(Rand(),'@',Rand(),'.com');
SET isError = 0;
INSERT INTO tbl_user VALUES(ID_USER, 'ipsum','lorem','[email protected]','password','ROLE_USER');
SELECT
u.*
FROM
tbl_user u;
END &&
DELIMITER ;