使用游标

  • 1游标
  • 2使用游标
  • 2.1创建游标
  • 2.2使用游标
  • 2.3关闭游标


1游标

有时,需要在检索出来的行中前进或后退一行或多行。这就是使用游标的原因。
游标(cursor)是一个存储在MySQL服务器上的数据库查询,它不是一条SELECT语句,而是被该语句检索出来的结果集。在存储了游标之后,应用程序可以根据需要滚动混着浏览其中的数据

游标主要用于交互式应用,其中用户需要滚动屏幕上的数据,并对数据进行浏览或做出更改。

2使用游标

使用游标涉及几个明确的步骤

  1. 在能够使用游标前,必须声明(定义)它。这个过程实际上没有检索数据,它只是定义要使用的SELECT语句。
  2. 一旦声明后,必须打开游标以供使用。这个过程用前面定义的SELECT语句把数据实际检索出来。
  3. 对于填有数据的游标,根据需要取出(检索)各行
  4. 在结束游标使用时,必须关闭游标

在声明游标后,可根据需要频繁地打开和关闭游标。在游标打开后,可根据需要频繁地执行取操作。

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释放游标使用的所有内部内存和资源,因此在每个游标不再需要时都应该关闭