BEGIN END

语法

[begin_label:] BEGIN
    [statement_list]
END [end_label]

解释说明

BEGIN ... END 主要用在复杂语法中,比如存储过程。一个复杂语句嵌套了 BEGIN and END ,并在其中包含各种类型的语句。每一个命令行都有一条或者多条sql语句,每个语句都以(;)结尾。BEGIN ... END中的命令行是可选项,所以命令行为空是合法的。

使用复杂语句需要客户端能够接受 (;),要在命令行客户端处理分隔符(;)。需要把(;)更改为(for example, to //) ,这样就可以在代码中添加(;)。更多信息请参考:mysql客户端的分隔符

如果在开始和结束位置都有开始和结束标志,那么这两个标志必须同名。

BEGIN ... END 结构可嵌套的。而且每一个代码块都可以定义自己代码块变量,如: CONDITIONs, HANDLERs and CURSORs等。不同代码块之间的变量名称可以重名。

声明顺序可以参考下面内容:

例子:

一个简单代码块:

CREATE PROCEDURE t()
BEGIN
	DECLARE x TINYINT UNSIGNED DEFAULT 1;
		BEGIN
			DECLARE x TINYINT UNSIGNED DEFAULT 2;
			DECLARE y TINYINT UNSIGNED DEFAULT 10;
			SELECT x, y;
		END;
	SELECT x;
END;

在这个例子中,外面代码块中声明了一个变量x,但是内部的代码块中又声明了一个变量X以及一个变量Y.在内部代码块的显示了X and Y 的值。但是在外面代码块中显示X的值,依然是原来的X的值,而不是内部代码块的值。而且最后代码块,不能显示y的值,因为y变量根本不存在。

Comments

Comments loading...
Content reproduced on this site is the property of its respective owners, and this content is not reviewed in advance by MariaDB. The views, information and opinions expressed by this content do not necessarily represent those of MariaDB or any other party.