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 ...
随机推荐
- OpenNebula openldap集成
Preface: 当前写这篇post的心情可谓是即激动,又操蛋!............................ ruiy还是言归正传,人老了,赖的扯淡了,哥当前一心看向Tech(s),做个顾 ...
- 【MongoDB数据库】MongoDB 命令入门初探
MongoDB是一款NoSql数据库,使用了"面向集合"(Collection-Oriented)原理,意思是数据被分组存储在数据集中,被称为一个集合(Collection).每一 ...
- stl之map 排序
排序问题,STL中默认是采用小于号来排序的,因为设置int等类型做key,它本身支持小于号运算,在一些特殊情况,比如关键字是一个结构体,涉及到排序就会出现问题,因为它没有小于号操作,insert等函数 ...
- md笔记——编程术语
thinkPython 读书笔记 本列表根据thinkPython中记录的大量编程术语 整理而来. 该书的重点不是教会你Python,而是培养读者用计算机科学家一样的思路来思考,设计,开发. 讲解了语 ...
- SQL学习之Insert的特殊用法(插入检索出的数据,表之间的数据复制)
1.插入检索出的数据 select * from dbo.Customers_1
- T-SQL 查询语句总结
我们使用一下两张表作为范例: select * from [dbo].[employee] select * from [dbo].[dept] 1.select语句 DISTINCT:去掉记录中的重 ...
- Java环境的配置
JAVA环境: 1.打开我的电脑--属性--高级--环境变量 2.将相应的JDK环境下载到本机,将路径保存到无中文路径中,并将路径复制下来. 3.在环境变量--系统变量,中新建 变量名:JAVA_HO ...
- Oracle学习之常见问题处理
转自:http://blog.csdn.net/liusong0605/article/details/16349121 安装完oracle并启动服务后,通过sqlPlus无法登录,出现如下错误: s ...
- 与《YII框架》不得不说的故事—5篇目录
与<YII框架>不得不说的故事—基础篇 第1章 课程目标 1-1 课程目标 (00:54) 第2章 课前知识准备 2-1 YII的启动和安装 (05:12) 2-2 YII请求处理流程 ( ...
- php学习笔记(1)
1.引用文件的方法有两种:require 及 include require 的使用方法如 require("MyRequireFile.php"); .这个函数通常放在 PHP ...