MYSQL ----CURSOR 简单笔记

1628阅读 0评论2012-06-15 wuxiaobo_2009
分类:Mysql/postgreSQL

游标

出现的背景: SELECT 语句一般返回的是几行(一组),你想对结果中的每一行数据进行处理,怎么做? 建立的游标这个变量,可以定义游标(结果集的头/尾部)上下移动取出每一行。

怎么在MYSQL 中用游标(CURSOR) ?

1  使用游标之前,必须先定义(声明),过程还要声明绑定的SELECT 语句(声明,没有真正的取数)

2  使用游标,必须打开游标,SELECT 检索出来所有行填充游标(可见这个是一个内存区域,所以有步骤之说)

3  使用完游标,必须关闭

例子:

CREATE PROCEDURE processorders()

BEGIN

DECLARE ordernumbers CURSOR

FOR

SELECT order_num FROM orders

END;

最简单的游标定义:  定义在存储过程中,用orders select 语句填充,DECLARE 在存储过程中定义,所以,存储过程调用完毕,释放游标。当然一般游标的使用结构中,自带上:Close CURSOR_name

CREATE PROCEDURE processorders()

BEGIN

DECLARE o INT;

DECLARE done BOOLEAN DEFAULT 0;

DECLARE ordernumbers CURSOR

FOR

SELECT order_num FROM orders

-- Declare continue handler  当出现取数终止 SQLSTATE '02000' 时候 done =1

    DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done=1;

--Open the Cursor

OPEN ordernumbers;

--默认从第一行开始去数据,这样就吧第一次检索出来的order_num 复制给o

REPEAT

FETCH ordernumbers INTO o;

UNTIL done END REPEAT;

--Close the Cursor

CLOSE ordernumbers;

END;

上一篇:mysql 学习笔记(二)insert ,delete,update data
下一篇:mysql 中用户管理小结