[begin_label:] BEGIN
[statement_list]
END [end_label]
BEGIN ... END 语法用于编写复合语句,复合语句可以出现在存储程序(存储过程和函数,触发器和事件)中。复合语句可以包含多个语句,BEGIN并用和 END关键字括起来。 statement_list表示一个或多个语句的列表,每个语句以分号(;)语句定界符终止。在 statement_list本身是可选的,所以空复合语句(BEGIN END)是合法的。
BEGIN ... END 块可以嵌套。
使用多个语句要求客户端能够发送包含;语句定界符的语句字符串。在mysql命令行客户端中,这是通过delimiter命令处理的。将;语句结尾定界符更改为(例如//);可以在程序主体中使用。有关示例,请参见 第24.1节“定义存储的程序”。
BEGIN ... END可以标记 一个块。请参见 第13.6.2节“声明标签”。
[NOT] ATOMIC不支持 optional 子句。这意味着在指令块的开始处未设置任何事务保存点,并且BEGIN在此上下文中使用的 子句对当前事务没有影响。
注意
在所有存储的程序中,解析器将 BEGIN [WORK] 视为BEGIN ... END块的开始 。要在这种情况下开始交易,请 START TRANSACTION改用。