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 存储过程多游标嵌套遍历相关推荐

  1. Oracle存储过程以及游标嵌套实际使用

    Oracle数据库,存储过程以及游标嵌套实际使用 Oracle对存储过程嵌套游标的使用 这学期新开的Oracle的课程,但是无奈课本是很浅显的东西,内容比较少,以至于老师布置的作业有一些难度,需要参考 ...

  2. 在Mysql数据库里通过存储过程实现树形的遍历

    Oracle 循环递归遍历树结构查询 2015年10月27日 16:38:26 vrenzhuv 阅读数:2831 标签: oracle递归遍历 更多 个人分类: Oracle 在项目中经常会接触树结 ...

  3. mysql 为游标赋值_mysql 存储过程之游标

    游标按我的理解就是用在sql编程中对查询结果集的解析,类比jdbc中的resultset对象.FETCH 一行游标指针就往下面移动一行,直到所有行被遍历完成. 游标的使用分为4步: 1.定义游标,指定 ...

  4. mysql游标表间数据迁移_MySQL存储过程--通过游标遍历和异常处理迁移数据到历史表...

    -- 大表数据迁移,每天凌晨1点到5点执行,执行间隔时间10分钟,迁移旧数据到历史表.DELIMITER $$ USE `dbx`$$ DROP PROCEDURE IF EXISTS `pro_xx ...

  5. mysql游标 原理解说_mysql存储过程之游标(DECLARE)原理与用法详解

    本文实例讲述了mysql存储过程之游标(DECLARE)原理与用法.分享给大家供大家参考,具体如下: 我们在处理存储过程中的结果集时,可以使用游标,因为游标允许我们迭代查询返回的一组行,并相应地处理每 ...

  6. mysql的游标处理_mysql 存储过程、游标及逐行处理的配合使用

    1. 数据准备 +----+------+--------+ | id | name | price1 | +----+------+--------+ | 1 | 大米 | 5 | | 2 | 鸡蛋 ...

  7. mysql自定义函数、存储过程、游标、触发器、事件(定时任务)

    创建函数FUN_GET_ORG_CHILD(rootId) CREATE FUNCTION `FUN_GET_ORG_CHILD`(rootId varchar(100))RETURNS varcha ...

  8. db2 获取返回的游标_MySQL ------ 存储过程与游标简单使用

    存储过程小例子 如完成以下事情,获得与之前一样的订单合计,但需要对合计增加营业税,不过只针对某些顾客 主要就是:1.获得合计2.把营业税有条件的添加到合计 3.返回合计(带或不带税) delimite ...

  9. mysql存储过程游标嵌套_MYSQL存储过程中使用游标嵌套的实例

    下面是编程之家 jb51.cc 通过网络收集整理的代码片段. 编程之家小编现在分享给大家,也给大家做个参考. delimiter $$ drop procedure if exists findErr ...

最新文章

  1. MyBatis的DAO接口中参数传递建议使用map类型的原因
  2. Javascript闭包与作用域
  3. 掌握 Angular2 的服务 (service)
  4. Python3.7模块之re
  5. sonar 设置模板(Template)
  6. Android获取本机号码及运营商
  7. sublime html乱码,HTML5 sublime 编码出现乱码怎么处理
  8. IDEA Maven项目添加本地jar包
  9. 浏览器滚动条默认样式改变
  10. [CareerCup] 17.3 Factorial Trailing Zeros 求阶乘末尾零的个数
  11. “云湖共生 • 数智未来”数据湖应用实践白皮书重磅发布
  12. MCE | 外泌体的检测提取机制
  13. git tag (打标签)
  14. 一些常见的Common类
  15. Arduino Uno 人体红外传感器实验-图文详录
  16. 【数学】 隐函数求导法则
  17. windows11 scp
  18. Java基础入门必须知道的英语词汇
  19. MongoDB集群和安全
  20. 7-2 求一元二次方程的根

热门文章

  1. 漫画:7种编程语言的学习曲线
  2. 自动化集成:Pipeline整合Docker容器
  3. 深度-图像风格变换【二】
  4. 数据结构基础(11) --循环链表的设计与实现
  5. Linux文件系统管理命令(第二版)
  6. BZOJ3170: [Tjoi2013]松鼠聚会(切比雪夫距离转曼哈顿距离)
  7. HTML5的离线储存
  8. spark 应用程序性能优化经验
  9. 手把手教你用.NET Core写爬虫
  10. EntityFramework Code First 添加唯一键