SQL检索操作返回一组称为结果集的行。这组返回的行都是与SQL语句相匹配的行。
结果集(result set)SQL查询所检索出的结果
游标的一些选项和特性:
(1)能够标记游标为只读,使数据能读取,但不能更新和删除。
(2)能控制可以执行的定向操作。
(3)能标记某些列为可编辑的,某些列为不可编辑的。
(4)规定范围,使游标对创建它的特定请求或对所有请求可访问。
(5)指示DBMS对检索出的数据做复制,使在游标打开和访问期间数据不变化。
使用游标的步骤:
(1)在能够使用游标前,必须声明(定义)它。这个过程实际上没有检索数据,他只是定义要使用的SELECT语句和游标选项。
(2)一旦声明后,必须打开游标以供使用。这个过程用前面定义的SELECT语句吧数据实际检索出来。
(3)对于填有数据的游标,根据需要取出(检索)各行。
(4)在结束游标使用时,必须关闭游标,而且可能的话,释放游标。
在声明游标后,可根据需要频繁地打开和关闭游标。在游标打开时,可根据需要频繁地执行取操作。
使用DECLARE命名游标,并定义相应的SELECT语句,根据需要带WHERE和其他子句。
创建一个检索没有电子邮件地址的所有客户的游标。Oracle版本。
DECLARE CURSOR CustCursor
IS
SELECT * FROM Customers
WHERE cust_emai IS NULL
游标用OPEN CURSOR打开游标。
OPEN CURSOR CustCursor
打开游标后用FETCH语句访问游标数据。FETCH指出要检索的行,从何处检索它们以及将它们放于何处。
使用Oracle语法从游标中检索一行:
DECLARE TYPE CustCursor IS REF CURSOR
RETURN Customers%ROWTYPE;
DECLARE CustRecord Customers%ROWTYPE
BEGIN
OPEN CustCursor;
FETCH CustCursor INTO CustRecord;
CLOSE CustCursor;
END;
从第一行到最后一行,对检索出来的数据进行循环:
DECLARE TYPE CustCursor IS REF CURSOR
RETURN Customers%ROWTYPE;
DECLARE CustRecord Customers%ROWTYPE
BEGIN
OPEN CustCursor;
LOOP
FETCH CustCursor INTO CustRecord;
EXIT WHEN CustCursor%NOTFOUND;
...
END LOOP;
CLOSE CustCursor;
END;
CLOSE CustCursor;
CLOSE语句用来关闭游标;一旦游标被关闭,如果不再此打开,将不能使用。但是,为使用它不需要再次声明,只需再次OPEN它即可。
原文地址:http://blog.csdn.net/veno813/article/details/45147393