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 ...
随机推荐
- zoj2729 Sum Up(模拟)
Sum Up Time Limit: 2 Seconds Memory Limit: 65536 KB Vivid has stored a piece of private informa ...
- hive集群安装配置
hive 是JAVA写的的一个数据仓库,依赖hadoop.没有安装hadoop的,请参考http://blog.csdn.net/lovemelovemycode/article/details/91 ...
- codechef Chef and The Right Triangles 题解
Chef and The Right Triangles The Chef is given a list of N triangles. Each triangle is identfied by ...
- 在线词典php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- JavaScript之面向对象学习八(继承)
简介:继承是OO语言中的一个最为人津津乐道的概念.许多OO语言都支持两种继承方式:接口继承和实现继承.接口继承只继承方法签名,而实现继承则继承实际的方法. 但是JS的函数并没有签名,所以在ECMASc ...
- android UI-EditText的长度监听慎用TextWatcher
在用户昵称的输入时,限定8个字符,本意是在输入超过8个时候,页面toast一个提示,就是下面的TextWatcher的监听,在afterTextChanged中处理. 原bug:huawei MT2- ...
- 想买一套arduino玩玩
对于物联网,去年才接触,认识但不熟悉.做过一个项目,买了一块树莓派,看了一段网络电视. 最近被邀分享一些关于物联网的东西,翻了些大学公开课,很系统但太偏理论和框架.听了一个TED感觉很不错,但太精简. ...
- Java DecimalFormat 格式化数字
我们经常要将数字进行格式化,比如取2位小数,这是最常见的.Java 提供 DecimalFormat 类,帮你用最快的速度将数字格式化为你需要的样子.下面是一个例子: importjava.text. ...
- SQL serve创建与调用存储过程
(1)创建 2编写存储过程(创建传参的存储过程)存储过程语法网络上很多不在累述 语法解析 Use Person 指定在那个数据库下建立存储过程 if (object_id('MyFunction', ...
- mysql save or update
原文:http://www.bitscn.com/pdb/mysql/201503/473268.html 背景 在平常的开发中,经常碰到这种更新数据的场景:先判断某一数据在库表中是否存在,存在则 ...