Объявить переменную синтаксиса недействительной в MySQL Workbench?
Я пытаюсь создать и установить переменную:
DECLARE myId INT;
SET myId = 5;
Однако я получаю недопустимую жалобу на синтаксис в MySQL Workbench:
Синтаксическая ошибка SQL около 'DECLARE myId INT;'
Я пробовал следующие варианты:
DECLARE myId INT(4);
SET myId = 5;
DECLARE @myId INT;
SET @myId = 5;
DECLARE @myId INT(4);
SET @myId = 5;
Что не так?
Ответы
Ответ 1
Как и в комментарии, Declare действует только в хранимых программах, таких как процедуры, функции.
здесь у вас есть пример процедуры хранения и его вызова.
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');
Ответ 2
У меня возникла такая же проблема. Переменные должны быть объявлены в начале script.
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 ;