MYSQL学习笔记(二十)使用游标
来源:互联网 发布:零售行业数据 编辑:程序博客网 时间:2024/05/22 06:23
- 游标
游标是一个存储在MYSQL服务器上的数据库查询,它不是一条SELECT语句,而是被该语句检索出来的结果集。
游标主要用于交互式应用,其中用户需要滚动屏幕上的数据,并对数据浏览或更改。
MYSQL游标只能用于存储过程(和函数) - 使用游标的步骤:
(1) 在能够使用游标前,必须声明(定义)它。此时未检索,只是定义要用SELECT语句
(2) 声明后,打开游标以供使用
(3) 对于天有数据的游标,根据需要取出(检索)各行
(4) 在结束游标使用时,必须关闭游标 - 创建游标
CREATE PROCEDURE processorders()
BEGIN
DECLARE ordernumbers CURSOR
FOR
SELECT order_num FROM orders;
END;
在这个存储过程中,DECLARE语句用来定义和命名游标,这里为ordernumbers - 打开和关闭游标
OPEN ordernumbers;
CLOSE ordernumberes;
打开和关闭游标应放在存储过程进行 - 使用游标数据
CREATE PROCEDURE processorders()
BEGIN
DECLARE ordernumbers CURSOR
FOR
SELECT order_num FROM orders;
OPEN ordernumbers;
FETCH ordernumbers INTO o;
CLOSE ordernumbers;
END;
其中FETCH用来检索当前行的order_num列(自动从第一行开始)到一个名为o的局部声明的变量中。对检索出的数据不做任何处理 - 工作样例
CREATE PROCEDURE processorders()
BEGIN
DECLARE done BOOLEAN DEFAULT 0;
DECLARE o INT;
DECLARE t DECIMAL(8,2);
DECLARE ordernumbers CURSOR
FOR
SELECT order_num FROM orders;
DECLARE CONTINUE HANDLER FOR SQLSTATE ‘02000’ SET done=1;
CREATE TABLE IF NOT EXISTS ordertotals
(order_num INT,total DECIMAL(8,2));
OPEN ordernumbers;
REPEAT
FETCH ordernumbers INTO o;
CALL ordertotal(o,1,t);
INSERT INTO ordertotals(order_num,total)
VALUES(o,t);
UNTIL done END REPEAT;
CLOSE ordernumbers;
END;
这个例子使用FETCH检索当前order_num到声明的名为o的变量中。
增加另一个名为t的变量,存储每个订单的合计。
当此处FETCH在REPEAT内,因此它反复执行到done为止。
在前面用DEFAULT 0定义变量done。
CONTINUE HANDLER,是在条件出现时被执行的代码。SQLSTATE ‘02000’出现时,SET done=1。
在此存储过程运行中创建了一个新表,这个表将保存存储过程生成的结果。FETCH取每个order_num,然后用CALL执行另一个存储过程来来计算每个订单的带税的合计(结果存储到t)。最后,用INSERT保存每个订单的订单号和合计。
阅读全文
0 0
- MYSQL学习笔记(二十)使用游标
- 《MySQL必知必会学习笔记》:游标的使用
- oracle学习笔记--游标(二)
- 学习笔记(二十)
- MYSQL学习笔记(十)使用子查询
- MySQL学习笔记之二十 授权表的结构
- 软件工程视频学习笔记(二十)
- Linux学习笔记(二十)
- python 学习笔记(二十)
- HTML5基础学习笔记(二十)
- 信息安全工程师 学习笔记(二十)
- Mysql学习笔记二十—字符集(乱码)与校对集
- 一千行MySQL学习笔记(十)
- PHP学习笔记之MySQL(十)
- mysql 学习记录(二十)--Mysql Server参数调整
- MySQL学习笔记(二)
- mysql学习笔记(二)
- Mysql学习笔记(二)
- 3.longest substring
- pcl 画法线
- dfs序
- 解析C++中函数重载的实现原理
- 算法-->1,2维多项式
- MYSQL学习笔记(二十)使用游标
- Xcode 一键导入代码块 一键调用 提高开发效率
- Java常用类
- bootstrap学习总结分享
- 用训练好的caffemodel来进行分类
- HTML5实现简单的拖放功能
- 算法题练习系列之(十九): 程序运行时间
- Round-Robin算法的迭代器实现
- BZOJ 2301 [HAOI2011]Problem b (莫比乌斯反演)