mysql 多重游标嵌套
1、DECLARE CONTINUE HANDLER FOR NOT FOUND
在mysql的存储过程中经常会看到这句话:DECLARE CONTINUE HANDLER FOR NOT FOUND
它的含义是:若没有数据返回,程序继续,并将变量IS_FOUND设为0 ,这种情况是出现在select XX into XXX from tablename的时候发生的。
2、查询每个年级下都有哪些班级,一张年级表(org_grade)一张班级表(org_class)
2.1 建表
grade_Id int(11) NOT NULL AUTO_INCREMENT,
grade_name varchar(255) DEFAULT NULL,
PRIMARY KEY (grade_Id)
)
ENGINE = MYISAM
AUTO_INCREMENT = 2
AVG_ROW_LENGTH = 20
CHARACTER SET utf8
COLLATE utf8_general_ci;
class_Id int(11) NOT NULL AUTO_INCREMENT,
class_name varchar(255) DEFAULT NULL,
grade_id int(11) DEFAULT NULL,
PRIMARY KEY (class_Id)
)
ENGINE = MYISAM
AUTO_INCREMENT = 3
AVG_ROW_LENGTH = 20
CHARACTER SET utf8
COLLATE utf8_general_ci;
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 class_loop;
CLOSE class_csr;
SET l_done=0;
END LOOP grade_loop;
CLOSE grade_csr;
END;
mysql 多重游标嵌套的更多相关文章
- mysql 存储过程 游标嵌套
基本表temp 包括 name, type, sendCity, getCity 分别对应物流送货司机名, 倒车的第几段, 发货城市, 收货城市 表结构 -- -------------------- ...
- Vue.js多重组件嵌套
Vue.js多重组件嵌套 Vue.js中提供了非常棒的组件化思想,组件提高了代码的复用性.今天我们来实现一个形如 <app> <app-header></app-head ...
- MySQL中游标使用以及读取文本数据
原文:MySQL中游标使用以及读取文本数据 前言 之前一直没有接触数据库的学习,只是本科时候修了一本数据库基本知识的课.当时只对C++感兴趣,天真的认为其它的课都没有用,数据库也是半懂不懂,胡乱就考试 ...
- MySQL存储过程 游标
MySQL存储过程 游标 如何在存储过程中使用MySQL游标来遍历SELECT语句返回的结果集 MySQL游标简介 要处理存储过程中的结果集,请使用游标.游标允许您迭代查询返回的一组行,并相应地处理 ...
- 关于游标嵌套时@@FETCH_STATUS的值
游标嵌套使用时,@@FETCH_STATUS的值有时会从内部游标影响到外部的游标,使外部的游标只循环一次.这时要检查游标的使用方法.要先移动游标,然后就开始判断,为真进行进行业务逻辑处理,然后移动游标 ...
- mysql 游标嵌套
BEGIN -- 开始存储过程 declare my_ID varchar(32); -- 线路iddeclare my_SpecialLineName varchar(50); -- 线路名称 de ...
- mysql存储过程游标嵌套循环
自己写的一个mysql存储过程如下: BEGIN DECLARE _did bigint(20);DECLARE _count int;DECLARE s1 int;DECLARE cur_1 CUR ...
- Mysql 视图 游标 触发器 存储过程 事务
Mysql 视图 触发器 存储过程 游标 游标是从数据表中提取出来的数据,以临时表的形式存放在内存中,在游标中有一个数据指针,在初始状态下指向的是首记录,利用fetch语句可以移动该指针,从而对游标中 ...
- MySql使用游标Cursor循环(While)更新数据
#要修改的变量 DECLARE var_ID VARCHAR(50) DEFAULT ''; #需要修改的数据的数量 DECLARE var_UpdateCount INT; #当前循环次数 DECL ...
随机推荐
- [置顶] C# WINCE调节屏幕亮度
在wince里面保存屏幕亮度的值保存在注册表HKEY_CURRENT_USER\ControlPanel\\Backlight\Brightness里面,值的范围是0-100,所以要改变屏幕的亮度,只 ...
- ceph 块设备
数据的存储设备? 数据的存储有3种形式,1种是直接以二进制数据的形式存储在裸设备(包括块设备)上,另外一种是以文件的形式经过文件系统管理进行存储.第三种就是以对象的形式进行对象存储.本篇讨论围绕着块设 ...
- Linux前台的程序转到后台执行(关闭终端而不杀死命令)
你是否经常遇到这样的情况,通过SSH或者终端putty连接到一台linux/unix机器,执行一个程序.一个脚本或者一条命令,但现在你需要关闭SSH或者终端,由于该该程序.脚本或者命令正在运行,一旦你 ...
- framework层和native层实现联网控制(iptable方式)
最近工作中,需要开发一个功能----联网控制,这个功能其实用过root的安卓机应该都知道,禁止某个应用连接移动网络或者wifi. root后,通过su去执行iptable的命令就可以根据uid去控制应 ...
- 笔记-linux下Qt5.3.2 静态编译
这里主要讲linux下的编译,windows下面比较简单 参考:http://qt-project.org/wiki/Building-Qt-5-from-Git 依赖 sudo apt-get in ...
- Linux命令之切换用户
一.从 user 用户切换到 root 用户 不管是用图形模式登录 Ubuntu,还是命令行模式登录,我们会发现缺省的用户是 user,但是当我们需要执行一些具有 root 权限的操作(如修还系统文件 ...
- Hive常用操作之数据导入导出
一.Hive数据导入导出 1.hive数据导出 很多时候,我们在hive中执行select语句,希望将最终的结果保存到本地文件或者保存到hdfs系统中或者保存到一个新的表中,hive提供了方便的关键词 ...
- JQuery中serialize() 序列化
更多2014/8/24 来源:jquery学习浏览量:1671 学习标签: serialize 本文导读:在jQuery中,当我们使用ajax时,常常需要拼装input数据以键值对(Key/Value ...
- java中对于JSON 的处理 fastjson gson 系统自带的JSON 的选择
从2月初到8月末,经历了一段痛苦的经历,现在总算感觉已经走出来了,经历那事之后 感觉对人与人之间的感情看的更透了,人也没那么浮躁了: 说实话 以前从来不知道鸟叫有多好听,现在突然觉的大自然真的很美,放 ...
- c++ - fcgio.cpp:50: error: 'EOF' was not declared in this scope - Stack Overflow
c++ - fcgio.cpp:50: error: 'EOF' was not declared in this scope - Stack Overflow fcgio.cpp:50: error ...