Mysql 在触发器内声明变量时出错1064

Mysql 在触发器内声明变量时出错1064,mysql,sql,Mysql,Sql,我在触发器中声明变量时遇到问题 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 DEL

我在触发器中声明变量时遇到问题

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;
这一行仍然会弹出错误。

我看到两个问题

第一,您有一个开始…结束块,但您没有声明触发器

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 ;
说:

开始。。。END语法用于编写复合语句,这些语句可以出现在存储程序(存储过程和函数、触发器和事件)中

不能将BEGIN…END用作纯语句。它必须是创建触发器、创建过程、创建函数或创建事件的一部分

第二,在块中有两个DECLARE语句,中间有一个SET

说:

仅允许在BEGIN中声明。。。结束复合语句,并且必须在其开始处,在任何其他语句之前


您正在尝试在完成另一个语句SET之后使用第二个DECLARE。提前做好所有的申报。

我想你没有。谢谢。我只发布了我的触发器的一个片段。提前声明所有内容使其工作正常,谢谢@盖特,今后,请明确说明您正在发布代码摘录。