mysql 存储过程、游标及逐行处理的配合使用
来源:互联网 发布:位面淘宝txt下载 编辑:程序博客网 时间:2024/05/15 16:41
1. 数据准备
+----+------+--------+| id | name | price1 |+----+------+--------+| 1 | 大米 | 5 || 2 | 鸡蛋 | 4.5 || 3 | 苹果 | 6 || 4 | 面粉 | 4 || 5 | 小米 | 5.5 |+----+------+--------+
2. 定义一个存储过程(供下一存储过程调用)
delimiter //create procedure getPrice1( in id int, in addSelf boolean, out ototal decimal(6,2)) comment '根据id及是否价格乘2来获取价格'begin -- 声明临时变量price declare price decimal(6,2); -- 根据id查询price1保存到临时变量price select price1 from aa01 where aa01.id = id into price; -- 判断是否需要乘2 if addSelf then select price * 2 into price; end if; -- 最后将临时变量赋值给输出变量 select price into ototal;end //delimiter ;
3. 存储过程、游标及逐行处理的配合使用
delimiter //create procedure copyIdAndDoublePrice1()comment '将原始表中id和price1*2结果赋值到表aa02中'begin-- 声明局部变量declare done boolean default 0;declare tempId int;declare tempDoublePrice1 decimal(6,2);-- 声明游标declare idIndex cursorforselect id from aa01;-- 声明循环结束条件declare continue handler for sqlstate '02000' set done = 1;-- 创建aa02表用于保存结果集create table if not exists aa02(id int,doublePrice1 decimal(6,2));-- 打开游标open idIndex;-- 循环所有行repeat-- 获得当前循环的idfetch idIndex into tempId;-- 调用另一个存储过程获取结果call getPrice1(tempId, 1, tempDoublePrice1);-- 将结果插入aa02表insert into aa02(id, doublePrice1) values (tempId, tempDoublePrice1);-- 结束循环until done end repeat;-- 关闭游标close idIndex;end //delimiter ;
4. 调用存储过程及查询表aa02结果
call copyIdAndDoublePrice1();select * from aa02;
+----+--------------+| id | doublePrice1 |+----+--------------+| 1 | 10 || 2 | 9 || 3 | 12 || 4 | 8 || 5 | 11 || 5 | 11 |+----+--------------+
5. 注意事项
这条语句定义了一个CONTINUE HANDLER,它是在条件出现时被执行的代码。这里,它指出当SQLSTATE '02000'出现时,SET done=1。SQLSTATE'02000'是一个未找到条件,当REPEAT由于没有更多的行供循环而不能继续时,出现这个条件。
DECLARE语句的次序 DECLARE语句的发布存在特定的次序。用DECLARE语句定义的局部变量必须在定义任意游标或句柄之前定义,而句柄必须在游标之后定义。不遵守此顺序将产生错误消息。
阅读全文
0 0
- mysql 存储过程、游标及逐行处理的配合使用
- 存储过程与游标的配合使用
- mysql-游标及存储过程游标的使用--源自技术
- Mysql存储过程使用多个游标的处理
- mysql 存储过程创建及游标的使用
- 在Oralce存储过程中使用游标来逐行处理数据示例并执行调试
- MySQL存储过程 游标循环的使用
- mysql存储过程以及游标的使用
- Mysql 存储过程游标的使用
- mysql 存储过程 -- 游标的使用
- 存储过程及游标的使用
- 存储过程及游标的简易使用
- MySQL存储过程及游标
- mysql存储过程使用游标
- MYSQL存储过程中使用游标的实例
- Oracle与MySQL存储过程以及游标使用的区别
- mysql 使用游标进行删除操作的存储过程
- MySql 自定义函数,存储过程,游标的使用
- java动态代理
- 阅读源代码的感想
- java8新特性 Lambda表达式详解
- Photoshop-设计导航
- Android删除手机本地图片并同步到本地图片媒体库
- mysql 存储过程、游标及逐行处理的配合使用
- BZOJ 1673: [Usaco2005 Dec]Scales 天平 启发式搜索
- ajax请求二进制流图片并渲染到html中img标签
- 《深入理解java虚拟机》学习笔记(5)--虚拟机字节码执行引擎
- shiro讲解之 SpringMVC 集成Shiro
- 教大家如何快速又简单的区分单模与多模光纤收发器
- VS2013封装DLL时出现LINK2019无法解析的外部符号错误
- 【python】python数据结构(七)——排序:快速排序
- 01_RxJava操作符示例代码