gpt4 book ai didi

oracle - for 循环中的引用游标

转载 作者:行者123 更新时间:2023-12-05 01:20:06 25 4
gpt4 key购买 nike

ref cursor 是否可以像游标一样用于for循环?即喜欢

for i in cur_name 
loop
dbms_output.put_line(i.column_name)
end loop;

如果不可能,那为什么?

最佳答案

您不能像针对隐式/显式游标一样使用for 循环

declare
ref_cur sys_refcursor;
BEGIN
OPEN ref_cur FOR SELECT table_name FROM all_tables WHERE ROWNUM < 5;
for i in ref_cur loop
dbms_output.put_line(i.table_name);
end loop;
END;
/

你会得到一个错误

PLS-00221: 'REF_CUR' is not a procedure or is undefined

ref cursor 是指向 open cursor 的指针,用于将打开的游标作为 out 参数发送到客户端应用程序以循环遍历记录。
如果你想循环的话,

declare
ref_cur sys_refcursor;
v_name all_tables.table_name%TYPE;
BEGIN
OPEN ref_cur FOR SELECT table_name FROM all_tables WHERE ROWNUM < 5;
LOOP
FETCH ref_cur INTO v_name;
exit when ref_cur%notfound;
dbms_output.put_line(v_name);
end loop;
END;
/

如果游标的生命周期在 *block* 中,您可以使用隐式/显式游标

declare
cursor cur IS SELECT table_name FROM all_tables WHERE ROWNUM < 5;
BEGIN
for i in cur loop
dbms_output.put_line(i.table_name);
end loop;
END;
/

BEGIN 
for i in (SELECT table_name FROM all_tables WHERE ROWNUM < 5) loop
dbms_output.put_line(i.table_name);
end loop;
END;
/

关于oracle - for 循环中的引用游标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34289518/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com