MYSQL存储过程&循环&游标&IF$CASE
来源:互联网 发布:北航网络教育好毕业吗? 编辑:程序博客网 时间:2024/05/22 12:28
测试用表
SET FOREIGN_KEY_CHECKS=0;-- ------------------------------ Table structure for stu-- ----------------------------DROP TABLE IF EXISTS `stu`;CREATE TABLE `stu` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `kecheng` varchar(255) DEFAULT NULL, `fenshu` int(255) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;-- ------------------------------ Records of stu-- ----------------------------INSERT INTO `stu` VALUES ('1', '张三', '语文', '40');INSERT INTO `stu` VALUES ('2', '张三', '数学', '60');INSERT INTO `stu` VALUES ('3', '李四', '数学', '110');INSERT INTO `stu` VALUES ('4', '李四', '语文', '40');INSERT INTO `stu` VALUES ('7', '你本来就很二', '德语', '110');INSERT INTO `stu` VALUES ('8', '王五', '数学', null);
-- 多个out参数的存储过程DROP PROCEDURE IF EXISTS moreOutPro;CREATE PROCEDURE moreOutPro(OUT outParam1 INT, OUT outParam2 INT)BEGIN SELECT id, fenshu INTO outParam1, outParam2 FROM stu LIMIT 1;END;-- CALL moreOutPro(@outParam1, @outParam2);-- SELECT @outParam1, @outParam2;
-- 显示存储过程源代码-- SHOW CREATE PROCEDURE inPro;
-- while循环DROP PROCEDURE IF EXISTS while_loop;CREATE PROCEDURE while_loop(OUT outParam VARCHAR(30))BEGIN DECLARE str VARCHAR(30); DECLARE i INT; SET str = ''; SET i = 0; WHILE i < 10 DO SET i = i + 1; SET str = CONCAT(str,i,' '); END WHILE; SELECT str;END;-- CALL while_loop(@outParam);-- SELECT @outParam;
-- REPEAT循环DROP PROCEDURE IF EXISTS repeat_loop;CREATE PROCEDURE repeat_loop(OUT outParam VARCHAR(30))BEGIN DECLARE str VARCHAR(30); DECLARE i INT; SET str = ''; SET i = 0; REPEAT SET str = CONCAT(str,i,' '); SET i = i + 1; UNTIL i > 10 END REPEAT; SELECT str;END;CALL repeat_loop(@outParam);SELECT @outParam;
-- loop循环DROP PROCEDURE IF EXISTS loop_test;CREATE PROCEDURE loop_test(OUT outParam VARCHAR(30))BEGIN DECLARE i INT; DECLARE str VARCHAR(30); SET i = 0; SET str = ''; loop_label: LOOP IF i > 10 THEN LEAVE loop_label; -- LEAVE语句允许您立即退出循环,而不用等待检查条件。相当于java/c/c++中的break END IF; SET i = i + 1; IF (i MOD 2) THEN -- MOD是模运算,即求余运算,例如 1 MOD 2 = 1, 4 MOD 2 = 0, mysql中1代表true, 0代表false ITERATE -- ITERATION语句允许您跳过剩下的那些代码,并重新开始新的迭代.相当于java/c/c++中的continue loop_label; ELSE SET str = CONCAT(str,i,' '); END IF; END LOOP; SELECT str;END;-- -- CALL loop_test(@outParam);-- SELECT @outParam;
-- 游标DROP PROCEDURE IF EXISTS corPro;CREATE PROCEDURE corPro()BEGIN DECLARE finished INT DEFAULT 0; DECLARE param int; DECLARE cor CURSOR FOR SELECT id FROM stu; DECLARE CONTINUE HANDLER FOR NOT FOUND SET finished = 1; OPEN cor; loop_label: LOOP FETCH cor INTO param; IF finished = 1 THEN LEAVE loop_label; END IF; UPDATE stu SET fenshu = fenshu * 2 WHERE id = param; END LOOP loop_label; CLOSE cor;END;-- CALL corPro();
-- IFNULL(expr1,expr2)SELECT id, `name`, IFNULL(fenshu,100) FROM stu;-- IF(expr1,expr2,expr3)SELECT id, `name`, IF(fenshu > 80,'优秀','不行啊') FROM stu;
-- IF ELSEDROP PROCEDURE IF EXISTS ifElsePro;CREATE PROCEDURE ifElsePro(OUT outParam1 INT, OUT outParam VARCHAR(20))BEGIN SELECT MAX(fenshu) INTO outParam1 FROM stu; IF (outParam1 > 90) THEN SET outParam = '优秀'; ELSEIF (outParam1 > 60) THEN SET outParam = '及格'; ELSE SET outParam = '不及格'; END IF;END;-- -- CALL ifElsePro(@score, @lev);-- SELECT @score, @lev;
SELECT `name`, kecheng, CASE WHEN fenshu > 90 THEN '优秀' WHEN fenshu > 60 THEN '及格' ELSE '不及格' END fenshu FROM stu;
1 0
- MYSQL存储过程&循环&游标&IF$CASE
- mysql的存储过程中的语句if case 循环语句
- mysql 存储过程 游标 循环
- MySQL 存储,游标,变量,循环,IF判断
- Mysql存储过程游标加循环
- mysql存储过程 游标 循环使用介绍
- mysql存储过程 游标 循环使用介绍
- mysql存储过程 游标 查询结果循环
- Mysql存储过程游标加循环
- mysql存储过程 游标 查询结果循环
- MySQL存储过程 游标循环的使用
- MYSQL存储过程 游标 循环等
- 【MySQL】存储过程、游标、循环简单实例
- mysql存储过程 游标 循环使用介绍
- MySQL游标嵌套循环存储过程
- MySQL游标嵌套循环存储过程
- MYSQL存储过程循环CURSOR(游标)使用
- 存储过程,触发器,游标,if语句,三种循环
- mybatis教程--映射之一对一查询
- Android开发:shape和selector和layer-list的(详细说明)
- 构造MaxTree
- 手机怎么解除root权限?华为手机root教程
- unity 在安卓中使用SQLite
- MYSQL存储过程&循环&游标&IF$CASE
- Android 修改VideoView的宽
- Git中全局忽略.DS_Store文件
- 秒杀系统架构分析与实战
- webpack 与gulp 比较
- CentOS下LAMP环境搭建
- Java内部类
- myeclipse部署maven项目到tomcat,src/main/resources里面配置文件部署不到webapp下classes的问题
- 陈硕知乎专栏