写了一个简单的对多游标控制的存储过程

简介:
写了一个简单的对多游标控制的存储过程。
此例是示范游标的具体使用方法。
不过生产过程中不推荐使用游标。因为完全可以用INTO 变量语句和循环来代替游标。



1、SP 代码:


DELIMITER $$

DROP PROCEDURE IF EXISTS `test2`.`sp_cur_demo`$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_cur_demo`()
BEGIN
    
-- Variants declare

    DECLARE i INT DEFAULT 0;
    DECLARE cnt INT DEFAULT 0;
    DECLARE a,b INT;
    DECLARE c CHAR(1);
    
-- Define cursor

    
-- Notice:Cursor's declaration must be after ordinary variant.

    DECLARE cur1 CURSOR FOR SELECT a1 from t1;
    DECLARE cur2 CURSOR FOR SELECT a2 from t1;
    DECLARE cur3 CURSOR FOR SELECT a3 from t1;
   
    
-- Fetch total number of the table.

    SELECT count(1) FROM t1 INTO cnt;
    DROP TABLE tmp; 
    
-- Create a temporary table to store the results.

    CREATE TEMPORARY TABLE IF NOT EXISTS tmp(cur_c1 int, cur_c2 int,cur_c3 char(1));
   
   
    OPEN cur1;
    OPEN cur2;
    OPEN cur3;
    
-- Begin fetch data into a new temporary table.

    WHILE i < cnt DO
      FETCH cur1 INTO a;
      FETCH cur2 INTO b;
      FETCH cur3 INTO c;
      INSERT INTO tmp SELECT a,b,c;
      SET i = i + 1;
    END WHILE;
    CLOSE cur1;
    CLOSE cur2;
    CLOSE cur3;
  END$$

DELIMITER ;
2、测试结果:

select * from t1;
call sp_cur_demo();
select * from tmp;

query result(7 records)

a1 a2 a3
1 1 A
2 2 B
3 2 C
4 2 D
5 3 E
6 3 F
7 4 G

query result(7 records)

cur_c1 cur_c2 cur_c3
1 1 A
2 2 B
3 2 C
4 2 D
5 3 E
6 3 F
7 4 G



本文转自 david_yeung 51CTO博客,原文链接:http://blog.51cto.com/yueliangdao0608/81279,如需转载请自行联系原作者

相关文章
|
3月前
|
存储 SQL 关系型数据库
MySQL存储过程 if、case、while、loop、游标、变量、条件处理程序
MySQL存储过程 if、case、while、loop、游标、变量、条件处理程序
41 0
|
4月前
|
存储 SQL Oracle
|
4月前
|
存储 SQL 定位技术
数据库基础(六):T-SQL语言程序设计、游标定义与使用及存储过程创建与信息查找
数据库基础(六):T-SQL语言程序设计、游标定义与使用及存储过程创建与信息查找
|
4月前
|
存储 SQL 关系型数据库
⑩⑤【DB】详解MySQL存储过程:变量、游标、存储函数、循环,判断语句、参数传递..
⑩⑤【DB】详解MySQL存储过程:变量、游标、存储函数、循环,判断语句、参数传递..
43 0
|
8月前
|
存储 关系型数据库 MySQL
MySQL存储过程中双层游标嵌套循环实例
MySQL存储过程中双层游标嵌套循环实例
|
10月前
|
存储 Oracle 关系型数据库
MySql存储过程游标循环问题解决过程
MySql存储过程游标循环问题解决过程
142 0
|
10月前
|
存储 Oracle 关系型数据库
oracle 存储过程~游标
oracle 存储过程~游标
|
10月前
|
存储 SQL 安全
15天学习MySQL计划-存储过程变量判断循环游标函数触发器(进阶篇)-第九天(下)
15天学习MySQL计划-存储过程变量判断循环游标函数触发器(进阶篇)-第九天
113 0
|
10月前
|
存储 SQL 关系型数据库
15天学习MySQL计划-存储过程变量判断循环游标函数触发器(进阶篇)-第九天(上)
15天学习MySQL计划-存储过程变量判断循环游标函数触发器(进阶篇)-第九天
114 0
|
存储 SQL 关系型数据库
MariaDB、MySQL存储过程、游标基础应用举例说明
MariaDB、MySQL存储过程、游标基础应用举例说明
140 0