Mysql入门基于MySQL游标的具体使用详解
《Mysql入门基于MySQL游标的具体使用详解》要点: MYSQL学习测试表 level ; create table test.level (name varchar(20)); 再 insert 些数据 ; MYSQL学习代码 MYSQL学习初始化 drop procedure if exists useCursor // 建立 存储过程 create 代码如下: CREATE PROCEDURE useCursor() MYSQL学习BEGIN 局部变量的定义 declare 代码如下: declare tmpName varchar(20) default '' ;? declare allName varchar(255) default '' ;? declare cur1 CURSOR FOR SELECT name FROM test.level ;? MySQL 游标 异常后 捕获 MYSQL学习并设置 循环使用 变量 tmpname 为 null 跳出循环. declare CONTINUE HANDLER FOR SQLSTATE '02000' SET tmpname = null; 开游标 代码如下: OPEN cur1; 游标向下走一步 代码如下: FETCH cur1 INTO tmpName; 循环体 这很明显 把MySQL 游标查询出的 name 都加起并用 ; 号隔开 代码如下: WHILE ( tmpname is not null) DO set tmpName = CONCAT(tmpName,";") ; set allName = CONCAT(allName,tmpName) ; 游标向下走一步 代码如下: FETCH cur1 INTO tmpName; 结束循环体: 代码如下: END WHILE; 关闭游标 代码如下: CLOSE cur1; 选择数据 代码如下: select allName ; 结束存储过程 代码如下: END;// 调用存储过程: 代码如下: call useCursor()// 运行成果: 代码如下: mysql> call useCursor()// MYSQL学习+--------------------------------------+ MYSQL学习| allName????????????????????????????? | MYSQL学习+--------------------------------------+ MYSQL学习| f1;c3;c6;c5;c2;c4;c1;f1;f3;f4;f2;f5; | MYSQL学习+--------------------------------------+ MYSQL学习1 row in set (0.00 sec) loop循环游标: 代码如下: DELIMITER $$? DROP PROCEDURE IF EXITS cursor_example$$? CREATE PROCEDURE cursor_example()? ???? READS SQL DATA? BEGIN? ???? DECLARE l_employee_id INT;? ???? DECLARE l_salary NUMERIC(8,2);? ???? DECLARE l_department_id INT;? ???? DECLARE done INT DEFAULT 0;? ???? DECLARE cur1 CURSOR FOR SELECT employee_id,salary,department_id FROM employees;? ???? DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1;? ???? OPEN cur1;? ???? emp_loop: LOOP? ???????? FETCH cur1 INTO l_employee_id,l_salary,l_department_id;? ???????? IF done=1 THEN? ???????????? LEAVE emp_loop;? ???????? END IF;? ???? END LOOP emp_loop;? ???? CLOSE cur1;? END$$? DELIMITER ;? repeat循环游标: 代码如下: /*创立过程*/ DELIMITER // DROP PROCEDURE IF EXISTS test // CREATE PROCEDURE test() BEGIN ??? DECLARE done INT DEFAULT 0; ??? DECLARE a VARCHAR(200) DEFAULT ''; ??? DECLARE c VARCHAR(200) DEFAULT ''; ??? DECLARE mycursor CURSOR FOR SELECT? fusername FROM uchome_friend; ??? DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1; ??? OPEN mycursor; ??? REPEAT ??????? FETCH mycursor INTO a; ??????? IF NOT done THEN ??????????? SET c=CONCAT(c,a);/*字符串相加*/ ??????? END IF; ??? UNTIL done END REPEAT; ??? CLOSE mycursor; ??? SELECT c; END // DELIMITER ; 代码如下: /*创立过程*/ DELIMITER // DROP PROCEDURE IF EXISTS test // CREATE PROCEDURE test() BEGIN ??? DECLARE done INT DEFAULT 0; ??? DECLARE a VARCHAR(200) DEFAULT ''; ??? DECLARE c VARCHAR(200) DEFAULT ''; ??? DECLARE mycursor CURSOR FOR SELECT? fusername FROM uchome_friend; ??? DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1; ??? OPEN mycursor; ??? REPEAT ??????? FETCH mycursor INTO a; ??????? IF NOT done THEN ??????????? SET c=CONCAT(c,a);/*字符串相加*/ ??????? END IF; ??? UNTIL done END REPEAT; ??? CLOSE mycursor; ??? SELECT c; END // DELIMITER ; 欢迎参与《Mysql入门基于MySQL游标的具体使用详解》讨论,分享您的想法,编程之家PHP学院为您提供专业教程。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Mysql应用Centos7下使用yum安装mysql数据库的详细教程(增强
- MySQL带比较运算符的子查询
- MYSQL教程深入sql多表差异化联合查询的问题详解
- Mysql实例使用Rotate Master实现MySQL 多主复制的实现方法
- Mysql之EXPLAIN显示using filesort
- mysql – Django偶尔也无法连接到数据库(Centos)
- MYSQL数据库MySQL5.6.31 winx64.zip 安装配置教程详解
- 解决phpMyAdmin 高级功能尚未完全设置,部分功能未激活
- Mysql入门单条select语句实现mysql查询与统计次数
- MYSQL教程Keepalived+HAProxy实现MySQL高可用负载均衡的配置