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。
答案 0 :(得分:2)
存储过程的一个常见问题是语言(a&#39 ;;')通常使用的分隔符表示语句的结束。当然,对于存储过程,在一个大的代码块中可能有多个语句 - 如您的示例所示。 绕过这个方法是改变分隔符:
delimiter $$
所以现在它将执行所有操作,直到下一个$$作为一段代码。所以在运行语句之前这样做。然后在结尾处使用 a $$运行代码。 不要忘记在
之后改回来delimiter ;