方式一:
cursor_name SYS_REFCURSOR;
方式二:
--定义一个REF游标类型(该游标类型和SYS_REFCURSOR是等效的)。
TYPE type_name IS REF CURSOR;
--声明一个REF游标类型的游标。
cursor_name type_name;
声明显式游标。
CURSOR cursor_name [(param_list)] IS (select_statement);
声明引用游标(使用以下两种声明的引用游标是等效的)。
参数说明
cursor_name
所声明游标的名称。
param_list
显式游标的参数列表。
声明显式游标时,关键字IS后面的SELECT语句的WHERE子句可以使用这些参数。显式游标的参数列表是可选的,如果定义了参数,则必须在打开游标时传递相应的实际参数。
select_statement
用于声明显式游标的SELECT语句。
声明显式游标时,关键字IS后必须使用SELECT语句。该SELECT语句是对表或视图的查询语句,甚至也可以是联合查询。可以带WHERE条件、ORDER
BY或GROUP BY等子句,但不能使用INTO子句。SELECT语句的详细信息请参见SELECT。
SYS_REFCURSOR
系统游标,用于声明引用游标。
使用“cursor_name SYS_REFCURSOR;”声明游标时,不需要带SELECT语句。声明后的变量可做为输出参数,在OPEN阶段绑定SQL语句。
type_name
自定义REF游标类型的名称。
示例
--删除已存在的同名表。 DROP TABLE IF EXISTS test; --创建表test。 CREATE TABLE test(a int,b int); --声明游标。 DECLARE TYPE type_name IS RECORD ( a INT, b INT );CURSOR c1 IS SELECT * FROM test ORDER BY a; //声明显式游标c2 sys_refcursor; // 声明引用游标(方式一) abc type_name;TYPE tcur IS REF CURSOR;cursor_k tcur; // 声明引用游标(方式二) rec test%rowtype; BEGIN OPEN c2 FOR SELECT a FROM test ORDER BY a; CLOSE c2; OPEN c2 FOR SELECT a,b FROM test ORDER BY a; FETCH c2 INTO abc; CLOSE c2; DBMS_OUTPUT.PUT_LINE('result is ' || abc.a); DBMS_OUTPUT.PUT_LINE('result is ' || abc.b); OPEN cursor_k FOR (SELECT * FROM test); FETCH cursor_k INTO rec; close cursor_k; END; /
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。