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

华为GaussDB T 显式游标使用示例

原创 章芋文 2019-09-27
447

在显式游标的OPEN语句中,不能使用FOR子句。

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

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

在游标的FETCH语句中,如果定义的赋值变量的数据类型和返回结果集中对应列的数据类型不同,会发生强制数据类型转换,如果数据类型转换失败,会返回数据转换错误。

显式游标被打开后,建议在使用游标结束后显式地关闭该游标。如果一个游标没有显式关闭,那么在退出匿名块或者存储过程执行时,系统会自动释放该游标。


语法格式

--打开游标。

OPEN cursor_name;

--从游标中读取数据。

FETCH cursor_name INTO { variant_list | record_variant };

--关闭游标。

CLOSE cursor_name;

参数说明

course_name

要使用的游标的名称。

variant_list

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

record_variant

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


示例

--删除已存在的同名表。
DROP TABLE IF EXISTS emp;
--创建表emp。
CREATE TABLE emp(empno int, empname varchar(50), job varchar(50), sal int);
--向表emp中插ru记录。
INSERT INTO emp VALUES(123, 'abc', 'doctor', 456);
--提交事务。
COMMIT;
--声明并使用游标。
DECLARE       
       CURSOR c_job
       IS
       SELECT * FROM emp WHERE job='doctor';
       c_row emp%rowtype;
BEGIN       OPEN c_job;
         LOOP           
           FETCH c_job INTO c_row;           
           EXIT WHEN c_job%notfound;
            DBMS_OUTPUT.PUT_LINE(c_row.empno||'-'||c_row.empname ||'-'||c_row.job||'-'||c_row.sal);
         END LOOP;       
      CLOSE c_job;END;
/
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论