暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

华为GaussDB T 声明游标CURSOR

原创 章芋文 2019-09-27
355

方式一:

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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论