当前位置: 代码迷 >> SQL >> SQL必知必会 札记 第二十一章 使用游标
  详细解决方案

SQL必知必会 札记 第二十一章 使用游标

热度:76   发布时间:2016-05-05 10:34:31.0
SQL必知必会 笔记 第二十一章 使用游标

21.1游标

SQL检索操作返回一组称为结果集的行。这组返回的行都是与SQL语句相匹配的行。
结果集(result set)SQL查询所检索出的结果
游标的一些选项和特性:
(1)能够标记游标为只读,使数据能读取,但不能更新和删除。
(2)能控制可以执行的定向操作。
(3)能标记某些列为可编辑的,某些列为不可编辑的。
(4)规定范围,使游标对创建它的特定请求或对所有请求可访问。
(5)指示DBMS对检索出的数据做复制,使在游标打开和访问期间数据不变化。

21.2使用游标

使用游标的步骤:
(1)在能够使用游标前,必须声明(定义)它。这个过程实际上没有检索数据,他只是定义要使用的SELECT语句和游标选项。
(2)一旦声明后,必须打开游标以供使用。这个过程用前面定义的SELECT语句吧数据实际检索出来。
(3)对于填有数据的游标,根据需要取出(检索)各行。
(4)在结束游标使用时,必须关闭游标,而且可能的话,释放游标。
在声明游标后,可根据需要频繁地打开和关闭游标。在游标打开时,可根据需要频繁地执行取操作。

21.2.1创建游标

使用DECLARE命名游标,并定义相应的SELECT语句,根据需要带WHERE和其他子句。
创建一个检索没有电子邮件地址的所有客户的游标。Oracle版本。

DECLARE CURSOR CustCursorISSELECT * FROM CustomersWHERE cust_emai IS NULL

21.2.2使用游标

游标用OPEN CURSOR打开游标。
OPEN CURSOR CustCursor
打开游标后用FETCH语句访问游标数据。FETCH指出要检索的行,从何处检索它们以及将它们放于何处。
使用Oracle语法从游标中检索一行:

DECLARE TYPE CustCursor IS REF CURSOR     RETURN Customers%ROWTYPE;DECLARE CustRecord Customers%ROWTYPEBEGIN     OPEN CustCursor;     FETCH CustCursor INTO CustRecord;     CLOSE CustCursor;END;

从第一行到最后一行,对检索出来的数据进行循环:

DECLARE TYPE CustCursor IS REF CURSOR     RETURN Customers%ROWTYPE;DECLARE CustRecord Customers%ROWTYPEBEGIN     OPEN CustCursor;     LOOP     FETCH CustCursor INTO CustRecord;     EXIT WHEN CustCursor%NOTFOUND;     ...     END LOOP;     CLOSE CustCursor;END;

21.2.3关闭游标

CLOSE CustCursor;

CLOSE语句用来关闭游标;一旦游标被关闭,如果不再此打开,将不能使用。但是,为使用它不需要再次声明,只需再次OPEN它即可。

  相关解决方案