MySQL流程控制实例
2016-05-07 10:33
429 查看
1、IF ELSE
[sql] view
plain copy
DROP PROCEDURE IF EXISTS if_else_example;
CREATE PROCEDURE if_else_example(
IN p_type TINYINT
)
COMMENT 'if_else_example'
BEGIN
DECLARE m_varINTDEFAULT0;
IF p_type =1THEN
SET m_var =1;
ELSEIF p_type =2THEN
SET m_var =2;
ELSE
SET m_var =3;
ENDIF;
SELECT m_var;
END;
2、CASE WHEN
[sql] view
plain copy
DROP PROCEDUREIFEXISTS case_when_example;
CREATE PROCEDURE case_when_example(
IN p_type TINYINT
)
COMMENT 'case_when_example'
BEGIN
DECLARE m_varINTDEFAULT0;
CASE p_type
WHEN 1THEN
SET m_var= m_var+1;
SET m_var= m_var+1;
WHEN 2THEN
SET m_var= m_var+2;
SET m_var= m_var+2;
WHEN 3THEN
SET m_var= m_var+3;
SET m_var= m_var+3;
ENDCASE;
SELECT m_var;
END;
3、WHILE DO
[sql] view
plain copy
DECLARE iINTDEFAULT0;
WHILE i <100 DO
SET i = i +1;
ENDWHILE;
4、使用LEAVE语句强制退出存储过程
[sql] view
plain copy
DROPPROCEDUREIFEXISTS leave_example;
CREATEPROCEDURE leave_example(
OUT p_out INT
)
begin_label:BEGIN
DECLARE m INTDEFAULT5;
IF m >1THEN
SET p_out =1;
LEAVE begin_label;
ENDIF;
IF m >2THEN
SET p_out =2;
LEAVE begin_label;
ENDIF;
IF m >3THEN
SET p_out =3;
LEAVE begin_label;
ENDIF;
END;
/* CALL leave_example(@s); 结果:1*/
[sql] view
plain copy
DROP PROCEDURE IF EXISTS if_else_example;
CREATE PROCEDURE if_else_example(
IN p_type TINYINT
)
COMMENT 'if_else_example'
BEGIN
DECLARE m_varINTDEFAULT0;
IF p_type =1THEN
SET m_var =1;
ELSEIF p_type =2THEN
SET m_var =2;
ELSE
SET m_var =3;
ENDIF;
SELECT m_var;
END;
2、CASE WHEN
[sql] view
plain copy
DROP PROCEDUREIFEXISTS case_when_example;
CREATE PROCEDURE case_when_example(
IN p_type TINYINT
)
COMMENT 'case_when_example'
BEGIN
DECLARE m_varINTDEFAULT0;
CASE p_type
WHEN 1THEN
SET m_var= m_var+1;
SET m_var= m_var+1;
WHEN 2THEN
SET m_var= m_var+2;
SET m_var= m_var+2;
WHEN 3THEN
SET m_var= m_var+3;
SET m_var= m_var+3;
ENDCASE;
SELECT m_var;
END;
3、WHILE DO
[sql] view
plain copy
DECLARE iINTDEFAULT0;
WHILE i <100 DO
SET i = i +1;
ENDWHILE;
4、使用LEAVE语句强制退出存储过程
[sql] view
plain copy
DROPPROCEDUREIFEXISTS leave_example;
CREATEPROCEDURE leave_example(
OUT p_out INT
)
begin_label:BEGIN
DECLARE m INTDEFAULT5;
IF m >1THEN
SET p_out =1;
LEAVE begin_label;
ENDIF;
IF m >2THEN
SET p_out =2;
LEAVE begin_label;
ENDIF;
IF m >3THEN
SET p_out =3;
LEAVE begin_label;
ENDIF;
END;
/* CALL leave_example(@s); 结果:1*/
相关文章推荐
- MySQL 存储引擎(MyISAM、InnoDB、NDBCluster)
- Mysql备份、恢复
- 数据挖掘之weka连接mysql数据库
- MySQL数据库服务器的架设
- mysql 5.6.30安装配置
- 162 mysql Access denied for user 'root'@'localhost'
- mysql cluster的常见问题
- .AbstractMethodError: com.mysql.jdbc.Connection.isValid(I)Z错误
- MySQL InnoDB引擎索引长度受限怎么办?
- mac mysql root 初始密码 过期
- 解决mysql 客户端连接问题
- MySQL数据库分区功能的使用教程
- MySQL知识的持续汇总
- MySQL数据库服务器的架设
- Mac 下 Mysql 重置密码
- mysql 聚簇索引 和聚簇索引 (二级索引)的 那些事
- MySQL数据库服务器的架设
- Mysql主从备份和SQL语句的备份
- mysql 命令
- mysql 多表查询