创建存储过程的语法错误

时间:2017-05-02 06:42:01

标签: mysql

Create procedure Movestaff (input_staffID smallINT, new_deptID tinyINT)
BEGIN
 declare old_deptID tinyINT;
 start transaction;
 select departmentID into old_deptID from staff where staffID=input_staffID;
 update staff set departmentID = new_deptID where staffID=input_staffID;
 update department set staffCount = staffCount-1 where departmentID =old_deptID;
 update department set staffCount = staffCount+1 where departmentID =new_deptID;
 Commit;
END 

我在uni的老师为我们提供了这个存储过程来分析和评估,除了它在尝试执行它时不起作用。现在收到回复(下午5点)已经太晚了。我们最近才开始这个内容。我在第3行收到一个通用的MySQL错误 - 声明old_deptID。

1064 - 您的SQL语法出错;检查与MySQL服务器版本对应的手册,以便在第3行

附近使用正确的语法

1 个答案:

答案 0 :(得分:2)

存储过程的一个常见问题是语言(a&#39 ;;')通常使用的分隔符表示语句的结束。当然,对于存储过程,在一个大的代码块中可能有多个语句 - 如您的示例所示。 绕过这个方法是改变分隔符:

delimiter $$

所以现在它将执行所有操作,直到下一个$$作为一段代码。所以在运行语句之前这样做。然后在结尾处使用 a $$运行代码。 不要忘记在

之后改回来
delimiter ;