您的位置:首页 > 数据库 > MySQL

mysql中的begin-end流程控制语句与局部变量

2015-06-11 16:51 573 查看
转自:http://blog.sina.com.cn/s/blog_5198c7370100hvjq.html

通常begin-end用于定义一组语句块,在各大数据库中的客户端工具中可直接调用,但在mysql中不可。

begin-end、流程控制语句、局部变量只能用于函数、存储过程内部、游标、触发器的定义内部。以下的'[]'表示可选内容。

1、begin-end:

[begin_label:] BEGIN

[statement_list]

END [end_label]

如:

begin

select * from user;

end

2、if语句

IF search_condition THEN statement_list

[ELSEIF search_condition THEN statement_list] ...

[ELSE statement_list]

END IF

如:

BEGIN

SET b=110;

IF b>0 THEN

SELECT a+b;

END IF;

注意,end if后面要根据情况加';',有些不爽啊,不像sqlserver那样

3、while语句

[begin_label:] WHILE search_condition DO

statement_list

END WHILE [end_label]

如:

BEGIN

WHILE a<10 DO

SET a=a+1;

END WHILE;

SELECT a;

END//

4、局部变量

DECLARE var_name[,...] type [DEFAULT value]

如 declear a int(2) default 2;

注意该语句使用的地方(不能在外部程序中使用)

5、赋值语句set

SET var_name = expr [, var_name = expr] ...

如set a=5;set a=a+4;

赋值的所有操作都要使用set语句,直接使用a=5的操作是非法的

注意该语句使用的地方(不能在外部程序中使用)

6、@操作符

@a用于定义一个全局变量,该变量的生命周期只在本次连接。

set @a=3;赋值语句

set @a=b语句可存在于任何语句块中

总结:

mysql与sqlserver的语法还是有区别的如变量的声明,流程控制块,begin-end语句等都有差异,语法更加严格啰嗦,个人感觉不是很爽。另外mysql还有一些控制语句,如 leave Label,Loop label,repeat until等,都有些啰嗦繁琐,而这些语句实现的功能借助前面几个都可以实现,故在此不述
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: