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

华为GaussDB T 引用游标示例

原创 章芋文 2019-09-27
556

在引用游标的OPEN语句中,必须使用FOR子句。FOR子句中的SQL语句可以是SELECT语句,也可以是动态SQL语句(注意动态SQL也必须是SELECT子句,否则在执行阶段会报错)。

在游标的FETCH语句中,INTO子句的变量列表的列数必须和游标返回的结果集的列数一致,否则会返回错误“NOT_ENOUGH_VALUE”。

在游标的FETCH语句中,INTO子句使用记录变量存储数据时,只能使用一个记录变量,并且该记录变量的列数必须和返回结果集的列数一致,否则会返回错误“NOT_ENOUGH_VALUE”。

引用游标可用作SELECT语句的出参,直接返回给客户端做为结果集,也可通过系统函数DBMS_SQL.RETURN_RESULT返回给客户端做为结果集。

引用游标的OPEN语句使用FOR子句对游标赋值。


语法格式

--打开游标。

OPEN cursor_name FOR { dynamic_sql | select statement };

--从游标中读取数据。

FETCH cursor_name INTO { variant_list | record_variant };

--关闭游标。

CLOSE cursor_name;


参数说明

course_name

要使用的游标的名称。

variant_list

变量列表,用于存储从游标中读取的数据。

record_variant

Record类型变量,用于存储从游标中读取的数据。


示例

DECLARE
       c2 SYS_REFCURSOR;
       abc 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);
END;
/
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论