mysql存储过程开发中如何使用游标嵌套

在实际业务逻辑开发中,难免用到游标嵌套,举例如下:

delimiter //

drop procedure if exists good_nested_cursors1

//

CREATE   PROCEDURE good_nested_cursors1(  )

READS SQL DATA

BEGIN

DECLARE l_grade_id INT;

DECLARE l_class_id   INT;

DECLARE l_class_cnt     INT DEFAULT 0 ;

DECLARE l_done          INT DEFAULT  0;

DECLARE grade_csr cursor  FOR    SELECT grade_id FROM org_grade;

DECLARE class_csr cursor  FOR     SELECT class_id FROM org_class  WHERE grade_id=l_grade_id;

DECLARE CONTINUE HANDLER FOR NOT FOUND SET l_done=1;

OPEN grade_csr;

grade_loop: LOOP   -- Loop through org_grade

FETCH grade_csr into l_grade_id;

select concat('年级:', l_grade_id);

IF l_done=1 THEN

LEAVE grade_loop;

END IF;

OPEN class_csr;

SET l_class_cnt=0;

class_loop: LOOP      -- Loop through class in grade.

FETCH class_csr INTO l_class_id;

IF l_done=1 THEN

LEAVE class_loop;

END IF;

SET l_class_cnt=l_class_cnt+1;

select concat('    班级:', l_class_id);

END LOOP;

CLOSE class_csr;

SET l_done=0;

END LOOP grade_loop;

CLOSE grade_csr;

END;

//

delimiter ;

///

//另一个例子:

CREATE PROCEDURE curdemo()

NOT DETERMINISTIC

CONTAINS SQL

SQL SECURITY DEFINER

COMMENT ''

BEGIN

declare done1,done2 int default 0;

declare name1,name2 varchar(20);

declare id1,id2 int;

declare cur1 cursor for select id,name from test1;

declare continue handler for not found set done1 = 1;

open cur1;

repeat

fetch cur1 into id1, name1;

if not done1 then

insert into test3(name) values(name1);

begin

declare cur2 cursor for select id,name from test2;

declare continue handler for not found set done2 = 1;

open cur2;

repeat

fetch cur2 into id2,name2;

if not done2 then

insert into test3(name) values(name2);

end if;

until done2 end repeat;

close cur2;

set done2=0;

end;

end if;

until done1 end repeat;

close cur1;

commit;

END;

///

以上代码由达人礼品网提供

1楼aeolus_pu昨天 22:50

游标嵌套效率不太好吧

微信 赏一包辣条吧~

支付宝 赏一听可乐吧~

mysql存储过程在实际开发中怎么用_MYSQL存储过程开发中怎么使用游标嵌套相关推荐

  1. mysql存储过程中怎么打印_mysql存储过程怎么打印

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  2. Mysql提示缺少表的别名报错_mysql对sql中别名引起的Column not found问题

    Caused by: java.sql.SQLException: Column 'BTN_ICON' not found. 报错信息是找不到表中的某字段,但是表里确确实实有这个字段. 这个问题,在百 ...

  3. mysql 截取逗号并形成新的字段_MySQL将一个字段中以逗号分隔的取出来形成新的字段实现...

    1例如:要把如图1的字段拆分图2 select account_id, substring_index(substring_index(a.related_shop_ids,"," ...

  4. mysql存储过程的返回值在哪里设置_MySQL存储过程的返回值

    我必须创建一个SP,如果它有效,则返回一个值.但它不返回任何东西,我不知道,为什么? CREATE DEFINER=`root`@`localhost` PROCEDURE `validar_egre ...

  5. mysql开发要注意什么_Mysql日常开发注意要点

    1.MySQL存储引擎介绍 MyISAM:低版本MySQL默认的MySQL插件式存储引擎,存储文件易损坏,不支持事务. InnoDB:目前默认的MySQL存储引擎,用于事务处理应用程序,具有众多特性, ...

  6. mysql表中字段数据类型_mysql数据表中字段的数据类型有哪些?

    数据表中字段的数据类型有:TINYINT.SMALLINT.MEDIUMINT.INT.INTEGE.DATETIME.DATE.TIMESTAMP.TIME.YEAR.CHAR.VARCHAR.TE ...

  7. mysql执行字符串sql结果复制被变量_mysql存储过程-执行字符串变量的sql

    SET @xx="name,bm"; SET @sql1 = CONCAT('select ',@xx,' from people'); prepare s1 from @sql1 ...

  8. mysql 存储过程如何声明多个变量赋值_mysql存储过程:定义变量,赋值,判断,输出...

    1.定义变量,赋值,判断,输出 DROP PROCEDURE IF EXISTS proc_first; -- 如果proc_first存在就删除 create procedure proc_firs ...

  9. mysql 中like用法_mysql查询语句中like 的用法

    1.常见用法: (1)搭配%使用 %代表一个或多个字符的通配符,譬如查询字段name中以大开头的数据: (2)搭配_使用 _代表仅仅一个字符的通配符,把上面那条查询语句中的%改为_,会发现只能查询出一 ...

最新文章

  1. 4固定在底部_自建房不搭彩钢棚,4根钢结构撑个玻璃棚遮风挡雨,上面多个露台...
  2. spring应用实例
  3. Redis宕机数据丢失解决方案,不吃透都对不起自己
  4. Transaction 那点事儿,Spring事务管理
  5. AngularJS之页面跳转Route
  6. 使用C语言在windows下一口气打开一批网页
  7. 论MySQL的监控和调优
  8. Select2 鼠标点击空白处不消失简单测试和解决方法
  9. 已知两点坐标求水平距离_知道两个点的坐标X,Y,如何计算出两点间的距离以及角度,公式是什么...
  10. Qt之切换语言的方法(传统数组法与Qt语言家)
  11. 单片机学习——看门狗
  12. vscode之 wget下载zip文件并unzip解压zip文件
  13. java 对象数据映射_SpringMVC中json数据映射为java对象的坑
  14. 实话实说,现在的结婚,真就是走个形式!
  15. 官网http 499问题排障
  16. Unity3D Shader 新手教程(5/6) —— Bumped Diffuse Shader
  17. 浅谈iOS中关于app的优化
  18. centos7安装twisted出现“致命错误:Python.h:没有那个文件或目录”的终极解决办法
  19. 区分有状态和无状态组件
  20. 常见面试题 | Spring AOP 实现原理

热门文章

  1. 统计学习方法第八章作业:分类问题AdaBoost算法、回归问题提升树算法 代码实现
  2. 互联网1分钟 |1119
  3. flask开发问题小记
  4. Spring Boot使用Spring Data Redis操作Redis(单机/集群)
  5. silverlight ListBox 多列图片效果
  6. W3C api 抓取
  7. 前端月趋势榜:4 月最热门的 20 个前端开源项目 - 2104
  8. 详细分析内部类的发生内存泄漏的原因
  9. manjaro21 linux安装vscode
  10. js中split字符串分割示例