MySql存储(逻辑判断/条件控制/循环控制)
2016-11-13 13:27
381 查看
同编写程序类似,存储过程中也有对应的条件判断,功能类似于if、switch。在MySql里面对应的是IF和CASE
1、IF判断
IF判断的格式是这样的:
[sql] view
plaincopy
IF expression THEN commands
[ELSEIF expression THEN commands]
[ELSE commands]
END IF;
这里expression是我们的判断表达式;ELSE IF 和ELSE都是可选的;command就是当条件为真(true为1,false为0)时执行的命令。比如我们设计一个存储过程用于返回商品的价格,这里价格通过传入的参数来判断是要带税收的价格还是没有带税收的价格。先看看表的数据:
然后下面是我们的存储过程:
存储过程的话有两个输入参数,第一个isTaxed表示是不是要带税价格,第二个是产品的名称;在存储过程里面定义了两个变量,finalPrice用来保存价格,而taxRate表示税率。这里代码比较简单,就是判断下如果是要加税,就把原来的价格乘上税率。下面是测试结果:
true的情况表示是带税的价格。好了这个是使用IF的一个例子,下面看看CASE;
2、CASE的使用
同编程里面的那个switch ....case.....类似,使用CASE同编程一样也是当判断比较多时便于阅读和维护,我们也来看下CASE的语法:
下面我们假设不同类型的商品对应的税收税率是不一样的情况来看个例子,这里假设甜点的税率是0.05,奶制品的是0.1,家具类的是0.2:,下面是存储过程:
上面增加了一个保存产品类型的一个变量proType,用来保存商品类型。然后使用CASE来进行判断来设置税率,下面是测试的部分:
可以看到沙发的价格是1250*1.2=1500,而蛋糕的价格是10*1.05 = 10.5
在MySql的存储过程中可使用的循环有三种:WHILE、REPEAT、LOOP
1、WHILE
WHILE的格式是这样的:
[sql] view
plaincopy
WHILE expression DO
Statements
END WHILE
下面是个例子
[sql] view
plaincopy
DELIMITER $$
DROP PROCEDURE IF EXISTS `test`.`WhileLoopProc` $$
CREATE PROCEDURE `test`.`WhileLoopProc` ()
BEGIN
DECLARE x INT;
DECLARE str VARCHAR(255);
SET x = 1;
SET str = '';
WHILE x <= 5 DO
SET str = CONCAT(str,x,',');
SET x = x + 1;
END WHILE;
SELECT str;
END $$
DELIMITER ;
上面的例子最后输出“1,2,3,4,5,”这样的字符。
2、REPEAT
REPEAT的格式是这样的:
[sql] view
plaincopy
REPEAT
Statements;
UNTIL expression
END REPEAT
REPEAT好比我们编程里面的do...while一样。这边例子就不举了,同上面的类似。
3、LOOP 及 LEAVE、ITERATE
这里LOOP用来标记循环;而LEAVE表示离开循环,好比编程里面的break一样;ITERATE则继续循环,类型与编程里面的continue。
[sql] view
plaincopy
DELIMITER $$
DROP PROCEDURE IF EXISTS `test`.`LoopProc` $$
CREATE PROCEDURE `test`.`LoopProc` ()
BEGIN
DECLARE x INT;
DECLARE str VARCHAR(255);
SET x = 1;
SET str = '';
loop_label: LOOP
IF x > 10 THEN
LEAVE loop_label;
END IF;
SET x = x + 1;
IF (x mod 2) THEN
ITERATE loop_label;
ELSE
SET str = CONCAT(str,x,',');
END IF;
END LOOP;
SELECT str;
END $$
DELIMITER ;
上面代码输出10以内的偶数,用逗号分隔。这里注意到x>10的时候就LEAVE掉,如果遇到奇数则ITERATE,奇数对2取模为1,表示true
1、IF判断
IF判断的格式是这样的:
[sql] view
plaincopy
IF expression THEN commands
[ELSEIF expression THEN commands]
[ELSE commands]
END IF;
这里expression是我们的判断表达式;ELSE IF 和ELSE都是可选的;command就是当条件为真(true为1,false为0)时执行的命令。比如我们设计一个存储过程用于返回商品的价格,这里价格通过传入的参数来判断是要带税收的价格还是没有带税收的价格。先看看表的数据:
然后下面是我们的存储过程:
存储过程的话有两个输入参数,第一个isTaxed表示是不是要带税价格,第二个是产品的名称;在存储过程里面定义了两个变量,finalPrice用来保存价格,而taxRate表示税率。这里代码比较简单,就是判断下如果是要加税,就把原来的价格乘上税率。下面是测试结果:
true的情况表示是带税的价格。好了这个是使用IF的一个例子,下面看看CASE;
2、CASE的使用
同编程里面的那个switch ....case.....类似,使用CASE同编程一样也是当判断比较多时便于阅读和维护,我们也来看下CASE的语法:
下面我们假设不同类型的商品对应的税收税率是不一样的情况来看个例子,这里假设甜点的税率是0.05,奶制品的是0.1,家具类的是0.2:,下面是存储过程:
上面增加了一个保存产品类型的一个变量proType,用来保存商品类型。然后使用CASE来进行判断来设置税率,下面是测试的部分:
可以看到沙发的价格是1250*1.2=1500,而蛋糕的价格是10*1.05 = 10.5
在MySql的存储过程中可使用的循环有三种:WHILE、REPEAT、LOOP
1、WHILE
WHILE的格式是这样的:
[sql] view
plaincopy
WHILE expression DO
Statements
END WHILE
下面是个例子
[sql] view
plaincopy
DELIMITER $$
DROP PROCEDURE IF EXISTS `test`.`WhileLoopProc` $$
CREATE PROCEDURE `test`.`WhileLoopProc` ()
BEGIN
DECLARE x INT;
DECLARE str VARCHAR(255);
SET x = 1;
SET str = '';
WHILE x <= 5 DO
SET str = CONCAT(str,x,',');
SET x = x + 1;
END WHILE;
SELECT str;
END $$
DELIMITER ;
上面的例子最后输出“1,2,3,4,5,”这样的字符。
2、REPEAT
REPEAT的格式是这样的:
[sql] view
plaincopy
REPEAT
Statements;
UNTIL expression
END REPEAT
REPEAT好比我们编程里面的do...while一样。这边例子就不举了,同上面的类似。
3、LOOP 及 LEAVE、ITERATE
这里LOOP用来标记循环;而LEAVE表示离开循环,好比编程里面的break一样;ITERATE则继续循环,类型与编程里面的continue。
[sql] view
plaincopy
DELIMITER $$
DROP PROCEDURE IF EXISTS `test`.`LoopProc` $$
CREATE PROCEDURE `test`.`LoopProc` ()
BEGIN
DECLARE x INT;
DECLARE str VARCHAR(255);
SET x = 1;
SET str = '';
loop_label: LOOP
IF x > 10 THEN
LEAVE loop_label;
END IF;
SET x = x + 1;
IF (x mod 2) THEN
ITERATE loop_label;
ELSE
SET str = CONCAT(str,x,',');
END IF;
END LOOP;
SELECT str;
END $$
DELIMITER ;
上面代码输出10以内的偶数,用逗号分隔。这里注意到x>10的时候就LEAVE掉,如果遇到奇数则ITERATE,奇数对2取模为1,表示true
相关文章推荐
- MySql存储过程—逻辑判断,条件控制,循环控制
- MySql存储过程—逻辑判断,条件控制,循环控制
- MySql存储过程之逻辑判断和条件控制
- MySql存储过程—5、逻辑判断,条件控制
- MySql存储过程—5、逻辑判断,条件控制
- MySql存储过程之逻辑判断和条件控制
- MySql存储过程—5、逻辑判断,条件控制
- MySQL存储过程的循环控制指令
- mysql存储过程 条件判断/循环语句
- Java 控制语句:循环、条件判断
- mysql存储过程查询结果循环遍历 判断 赋值 游标等基本操作
- Python第四天 流程控制 if else条件判断 for循环 while循环
- mysql 存储过程示例,有参有返回值,使用到了判断,循环,游标,临时表,事务
- MySQL存储过程的循环控制指令
- mysql存储过程while循环搭配if elseif选择条件
- shell编程学习笔记6--条件判断(循环)与流程控制
- mysql存储过程查询结果循环遍历 判断 赋值 游标等基本操作
- 全面掌握Java中的循环控制语句与条件判断语句的使用
- Oracle 存储过程中的循环,条件判断,存储过程,游标小结
- mysql存储过程学习笔记--区块,条件,循环