使用游标
- 1游标
- 2使用游标
- 2.1创建游标
- 2.2使用游标
- 2.3关闭游标
1游标
有时,需要在检索出来的行中前进或后退一行或多行。这就是使用游标的原因。
游标(cursor)是一个存储在MySQL服务器上的数据库查询,它不是一条SELECT语句,而是被该语句检索出来的结果集。在存储了游标之后,应用程序可以根据需要滚动混着浏览其中的数据。
游标主要用于交互式应用,其中用户需要滚动屏幕上的数据,并对数据进行浏览或做出更改。
2使用游标
使用游标涉及几个明确的步骤
- 在能够使用游标前,必须声明(定义)它。这个过程实际上没有检索数据,它只是定义要使用的SELECT语句。
- 一旦声明后,必须打开游标以供使用。这个过程用前面定义的SELECT语句把数据实际检索出来。
- 对于填有数据的游标,根据需要取出(检索)各行。
- 在结束游标使用时,必须关闭游标。
在声明游标后,可根据需要频繁地打开和关闭游标。在游标打开后,可根据需要频繁地执行取操作。
2.1创建游标
游标用DECLARE语句创建,DECLARE命名游标,并定义相应的SELECT语句,根据需要带WHERE和其他子句。
实例说话
DECLARE CustCursor CURSOR
FOR
SELECT * FROM Customers
WHERE cust_email IS NULL;
分析:DELCARE语句用来定义和命名游标,这里为CustCursor。SELECT语句定义一个包含没有电子邮件地址(NULL值)的所有顾客的游标。定义游标后就可以打开它了。
2.2使用游标
使用OPEN CURSOR语句打开游标。
OPEN CURSOR CustCursor
在处理OPEN CURSOR语句时,执行查询,存储检索出的数据以供浏览和滚动。
使用FETCH语句访问游标。
DECLARE TYPE CustCursor IS REF CURSOR
RETURN Customers%ROWTYPE;
DECLARE CustRecord Customers%ROWTYPE
BEGIN
OPEN CustCursor;
FETCH CustCursor INTO CustRecord;
CLOSE CustCursor;
END;
分析:FETCH用来检索当前行(自动从第一行开始),放到生命的变量CustRecord中。对于检索出来的数据不做任何处理。
2.3关闭游标
关闭游标使用CLOSE CustCursor,CLOSE释放游标使用的所有内部内存和资源,因此在每个游标不再需要时都应该关闭。