mysql cursor 嵌套_MYSQL 存储过程多游标嵌套遍历
mysql 存储过程临时表、多游标嵌套使用样例:
CREATE PROCEDURE method(IN start_Code varchar(10),IN end_Code varchar(10),in start_Airport varchar(255),in end_Airport varchar(255))
BEGIN
DECLARE out_done INT DEFAULT FALSE ; -- 外层游标控制变量
DECLARE e_done INT DEFAULT 0;
DECLARE s_province varchar(50);
DECLARE s_city varchar(100);
DECLARE s_county varchar(100);
DECLARE e_province varchar(50);
DECLARE e_city varchar(100);
DECLARE e_county varchar(100);
DECLARE delivery_type INT;
DECLARE delivery_type_cn varchar(10);
DECLARE delivery_type_num INT;
DECLARE delivery_num_one INT;
DECLARE result_tmp varchar(10);
DECLARE startlist CURSOR FOR
SELECT p,c,cou FROM conver WHERE code = start_Code;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET out_done = TRUE ; -- 外层游标执行结束,置为TRUE
-- 创建临时表
create temporary table if not exists tmpTable(
id int primary key,
startport varchar(100),
startProvince varchar(100),
endport varchar(100),
endProvince varchar(100),
deliveryType varchar(10),
result varchar(10)
);
-- 清除临时表数据
truncate TABLE tmpTable;
OPEN startlist;
WHILE NOT out_done DO -- out WHILE
FETCH startlist INTO s_province,s_city,s_county;
IF NOT out_done THEN
BEGIN
DECLARE inner_done int DEFAULT FALSE ;
DECLARE endlist CURSOR FOR
select p,c,cou FROM conver where code = end_Code;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET inner_done = TRUE ;
OPEN endlist;
WHILE NOT inner_done DO -- inner WHILE
FETCH endlist INTO e_province,e_city,e_county; -- 从【内层游标】中获取数据,赋值到定义变量中
IF NOT inner_done THEN
set delivery_type=1; -- 方式 1:自 2:送
WHILE delivery_type <=2 DO
IF delivery_type = 1 THEN
set delivery_type_cn = '自';
select COUNT(*) INTO delivery_type_num from user au where code = end_Code;
IF delivery_type_num > 0 THEN
set result_tmp = 'OK';
ELSE
set result_tmp = 'NO';
END IF;
ELSE
set delivery_type_cn = '送';
select count(*) into delivery_num_one from delivery where county = e_county;
IF delivery_num_one > 0 THEN
set result_tmp = 'OK';
ELSE
set result_tmp = 'NO';
END IF;
END IF;
set e_done =e_done+1;
insert into tmpTable values(e_done,start_Airport,s_province,end_Airport,e_province,delivery_type_cn,result_tmp);
set delivery_type=delivery_type+1;
END WHILE;
END IF; -- END inner IF
END WHILE ; -- END inner WHILE
CLOSE endlist;-- 这个语句关闭先前打开的光标。
END; -- END inner BEGIN
END IF; -- END out IF
END WHILE; -- END out WHILE
CLOSE startlist;-- 这个语句关闭先前打开的光标。
select * from tmpTable;
END;
调用过程:
set @start_Code='O';
set @end_Code='C';
set @start_Airport='机场';
set @end_Airport='国际机场';
call Method(@start_Code,@end_Code,@start_Airport,@end_Airport);
mysql cursor 嵌套_MYSQL 存储过程多游标嵌套遍历相关推荐
- Oracle存储过程以及游标嵌套实际使用
Oracle数据库,存储过程以及游标嵌套实际使用 Oracle对存储过程嵌套游标的使用 这学期新开的Oracle的课程,但是无奈课本是很浅显的东西,内容比较少,以至于老师布置的作业有一些难度,需要参考 ...
- 在Mysql数据库里通过存储过程实现树形的遍历
Oracle 循环递归遍历树结构查询 2015年10月27日 16:38:26 vrenzhuv 阅读数:2831 标签: oracle递归遍历 更多 个人分类: Oracle 在项目中经常会接触树结 ...
- mysql 为游标赋值_mysql 存储过程之游标
游标按我的理解就是用在sql编程中对查询结果集的解析,类比jdbc中的resultset对象.FETCH 一行游标指针就往下面移动一行,直到所有行被遍历完成. 游标的使用分为4步: 1.定义游标,指定 ...
- mysql游标表间数据迁移_MySQL存储过程--通过游标遍历和异常处理迁移数据到历史表...
-- 大表数据迁移,每天凌晨1点到5点执行,执行间隔时间10分钟,迁移旧数据到历史表.DELIMITER $$ USE `dbx`$$ DROP PROCEDURE IF EXISTS `pro_xx ...
- mysql游标 原理解说_mysql存储过程之游标(DECLARE)原理与用法详解
本文实例讲述了mysql存储过程之游标(DECLARE)原理与用法.分享给大家供大家参考,具体如下: 我们在处理存储过程中的结果集时,可以使用游标,因为游标允许我们迭代查询返回的一组行,并相应地处理每 ...
- mysql的游标处理_mysql 存储过程、游标及逐行处理的配合使用
1. 数据准备 +----+------+--------+ | id | name | price1 | +----+------+--------+ | 1 | 大米 | 5 | | 2 | 鸡蛋 ...
- mysql自定义函数、存储过程、游标、触发器、事件(定时任务)
创建函数FUN_GET_ORG_CHILD(rootId) CREATE FUNCTION `FUN_GET_ORG_CHILD`(rootId varchar(100))RETURNS varcha ...
- db2 获取返回的游标_MySQL ------ 存储过程与游标简单使用
存储过程小例子 如完成以下事情,获得与之前一样的订单合计,但需要对合计增加营业税,不过只针对某些顾客 主要就是:1.获得合计2.把营业税有条件的添加到合计 3.返回合计(带或不带税) delimite ...
- mysql存储过程游标嵌套_MYSQL存储过程中使用游标嵌套的实例
下面是编程之家 jb51.cc 通过网络收集整理的代码片段. 编程之家小编现在分享给大家,也给大家做个参考. delimiter $$ drop procedure if exists findErr ...
最新文章
- MyBatis的DAO接口中参数传递建议使用map类型的原因
- Javascript闭包与作用域
- 掌握 Angular2 的服务 (service)
- Python3.7模块之re
- sonar 设置模板(Template)
- Android获取本机号码及运营商
- sublime html乱码,HTML5 sublime 编码出现乱码怎么处理
- IDEA Maven项目添加本地jar包
- 浏览器滚动条默认样式改变
- [CareerCup] 17.3 Factorial Trailing Zeros 求阶乘末尾零的个数
- “云湖共生 • 数智未来”数据湖应用实践白皮书重磅发布
- MCE | 外泌体的检测提取机制
- git tag (打标签)
- 一些常见的Common类
- Arduino Uno 人体红外传感器实验-图文详录
- 【数学】 隐函数求导法则
- windows11 scp
- Java基础入门必须知道的英语词汇
- MongoDB集群和安全
- 7-2 求一元二次方程的根