我在触发器中声明变量时遇到了问题。
SET DELIMITER ;;
BEGIN
DECLARE qtyNow INT;
SET qtyNow = (
SELECT qty
FROM warehouse
WHERE bin_id = 'GA66'
);
DECLARE need INT;
SET need = (
SELECT min_level
FROM warehouse
WHERE bin_id = 'GA66'
);
END;;
SET DELIMITER ;
我收到错误#1064
,这意味着非法语法。我不明白我哪里出错了。我甚至删除了所有那些,只是
DECLARE qtyNow INT;
此单行仍会弹出错误。
答案 0 :(得分:2)
我看到两个问题。
一,你有一个BEGIN ... END块,但你没有声明触发器。
BEGIN ... END语法用于编写复合语句,它可以出现在存储的程序(存储过程和函数,触发器和事件)中。
您不能将BEGIN ... END用作裸声明。它必须是CREATE TRIGGER,CREATE PROCEDURE,CREATE FUNCTION或CREATE EVENT的一部分。
二,你的块中有两个DECLARE语句,其间有一个SET。
Git bash-completion with filename support?说:
DECLARE只允许在BEGIN ... END复合语句中使用,并且必须在任何其他语句之前的开头。
您在完成另一个语句SET之后尝试使用第二个DECLARE。事先做好所有的DECLARE。