MySQL游标的具体使用方案

以下的文章主要描述的是MySQL 游标的具体使用方案,如果你对MySQL 游标的实际操作有兴趣的话,你就可以对以下的文章点击观看了,希望在你浏览之后会给你带来一些帮助在此方面。

请使用 MySQL 1.5 或以上version;

测试表 level ;

 
 
 
  1. create table test.level (name varchar(20));

再 insert 些数据 ;

代码

初始化

drop procedure if exists useCursor //

建立 存储过程 create

CREATE PROCEDURE useCursor()

BEGIN

局部变量的定义 declare

 
 
 
  1. declare tmpName varchar(20) default '' ;
  2. declare allName varchar(255) default '' ;
  3. declare cur1 CURSOR FOR SELECT name FROM test.level ;

MySQL 不知道为什么用异常加入判断 ?

此请参考官方文档 20.2.11. 光标 光标

这把 MySQL 游标 异常后 捕捉

并设置 循环使用 变量 tmpname 为 null 跳出循环。

 
 
 
  1. declare CONTINUE HANDLER FOR SQLSTATE '02000' SET tmpname = null;

开游标

OPEN cur1;

游标向下走一步

 
 
 
  1. FETCH cur1 INTO tmpName;

循环体 这很明显 把MySQL 游标查询出的 name 都加起并用 ; 号隔开

 
 
 
  1. WHILE ( tmpname is not null) DO
  2. set tmpName = CONCAT(tmpName ,";") ;
  3. set allName = CONCAT(allName ,tmpName) ;

游标向下走一步

 
 
 
  1. FETCH cur1 INTO tmpName;
  2. END WHILE;
  3. CLOSE cur1;
  4. select allName ;
  5. END;//
  6. call useCursor()//

运行结果:

代码

 
 
 
  1. MySQL> call useCursor()//
  2. +--------------------------------------+
  3. | allName |
  4. +--------------------------------------+
  5. | f1;c3;c6;c5;c2;c4;c1;f1;f3;f4;f2;f5; |
  6. +--------------------------------------+
  7. 1 row in set (0.00 sec)

代码

 
 
 
  1. DELIMITER $$ 
  2. DROP PROCEDURE IF EXITS cursor_example$$ 
  3. CREATE PROCEDURE cursor_example() 
  4. READS SQL DATA 
  5. BEGIN 
  6. DECLARE l_employee_id INT; 
  7. DECLARE l_salary NUMERIC(8,2); 
  8. DECLARE l_department_id INT; 
  9. DECLARE done INT DEFAULT 0; 
  10. DECLARE cur1 CURSOR FOR SELECT employee_id, salary, department_id FROM employees; 
  11. DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1; 
  12. OPEN cur1; 
  13. emp_loop: LOOP 
  14. FETCH cur1 INTO l_employee_id, l_salary, l_department_id; 
  15. IF done=1 THEN 
  16. LEAVE emp_loop; 
  17. END IF; 
  18. END LOOP emp_loop; 
  19. CLOSE cur1; 
  20. END$$ 
  21. DELIMITER ; 

代码

创建过程

 
 
 
  1. DELIMITER //
  2. DROP PROCEDURE IF EXISTS test //
  3. CREATE PROCEDURE test()
  4. BEGIN
  5. DECLARE done INT DEFAULT 0;
  6. DECLARE a VARCHAR(200) DEFAULT '';
  7. DECLARE c VARCHAR(200) DEFAULT '';
  8. DECLARE mycursor CURSOR FOR SELECT fusername FROM uchome_friend;
  9. DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1;
  10. OPEN mycursor;
  11. REPEAT 
  12. FETCH mycursor INTO a;
  13. IF NOT done THEN
  14. SET c=CONCAT(c,a);

字符串相加

 
 
 
  1. END IF;
  2. UNTIL done END REPEAT;
  3. CLOSE mycursor;
  4. SELECT c;
  5. END //
  6. DELIMITER ;

以上的相关内容就是对MySQL 游标使用的介绍,望你能有所收获。

网站栏目:MySQL游标的具体使用方案
标题来源:http://www.csdahua.cn/qtweb/news20/438770.html

网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网