AIOps 一场颠覆传统运维的盛筵
1137
2022-11-07
华为GaussDB T 循环遍历游标FOR IN LOOP
使用FOR循环遍历显式游标时,自动执行游标的OPEN、FETCH、CLOSE语句和循环语句的功能,即进入循环时,游标FOR循环语句自动打开游标,并提取第一行游标数据,当程序处理完当前所提取的数据而进入下一次循环时,游标FOR循环语句自动提取下一行数据供程序处理,当提取完结果集合中的所有数据行后结束循环,并自动关闭游标。如果在循环体内执行游标的OPEN、FETCH、CLOSE语句,会返回“INVALID_CURSOR”的错误。
使用FOR循环遍历游标时,如果关键字IN后面是游标名,则该游标名必须是显式游标或者引用游标的名称。
使用FOR循环遍历隐式游标时,关键字IN后面必须是一个SELECT语句。
语法格式
使用FOR循环遍历隐式游标。
FOR index_name IN select_statement LOOP statement;
END LOOP;
使用FOR循环遍历显式游标。
FOR index_name IN cursor_name LOOP statement;
END LOOP;
参数说明
index_name
循环变量的名称。
cursor_name
FOR循环要遍历的游标的名称。
select_statement
SELECT语句。指定隐式游标的遍历列表。
statement
循环体。不允许为空。
示例
使用FOR循环遍历显式游标。
DECLARE CURSOR c1 IS SELECT a,b FROM test ORDER BY a;BEGIN DELETE FROM test; INSERT INTO test(a,b) VALUES(1,100); INSERT INTO test(a,b) VALUES(1,100); FOR item IN c1 LOOP DBMS_OUTPUT.PUT_LINE('A = ' || item.a || ',B = ' || item.b); DBMS_OUTPUT.PUT_LINE('CURSOR%ISOPEN is ' || c1%ISOPEN); DBMS_OUTPUT.PUT_LINE('CURSOR%FOUND is ' || c1%FOUND); DBMS_OUTPUT.PUT_LINE('CURSOR%NOTFOUND is ' || c1%NOTFOUND); DBMS_OUTPUT.PUT_LINE('CURSOR%ROWCOUNT is ' || c1%ROWCOUNT); END LOOP; DBMS_OUTPUT.PUT_LINE('after for loop'); DBMS_OUTPUT.PUT_LINE('CURSOR%ISOPEN is ' || c1%ISOPEN);END;/
使用FOR循环遍历隐式游标
BEGIN FOR a IN(SELECT * FROM emp WHERE ename LIKE '%zhangsan%' AND sal > 9000 ORDER BY empno;) LOOP DBMS_OUTPUT.PUT_LINE('a is emp:'||a.empno||'name:'||a.ename||'job:'||a.job||'sal:'||a.sal); DBMS_OUTPUT.PUT_LINE(sql%rowcount); END LOOP;END;/
发表评论
暂时没有评论,来抢沙发吧~