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等,都有些啰嗦繁琐,而这些语句实现的功能借助前面几个都可以实现,故在此不述
通常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等,都有些啰嗦繁琐,而这些语句实现的功能借助前面几个都可以实现,故在此不述
相关文章推荐
- 【MySql】 MySQL存储过程常用的函数(字符串类型操作,数学类,日期时间类)
- mysql复制表
- mysql 5.6 修改root原始密码不为空方法
- 查看MySQL默认字符集
- 配置 MySQL max_allowed_packet
- mysql获取插入后ID
- mysql版本选择
- mysql 异常
- mysql导入导出数据方法
- 关于mysql error code 1005 errno135的问题
- MySQL中SELECT+UPDATE处理并发更新问题解决方案分享
- 故障案例:磁盘空间不足可能引起的mysql问题
- corosync+pacemaker+drbd+mysql
- Mysql SQL优化&执行计划
- mysql大的记录写入或更新失败
- mysql忘记root密码windows下解决方法
- MySQL中的ROWNUM的实现
- mysql使用索引优化order排序
- 更新一张表的数据到新表
- mysql复制原理