Nar*_*iya 3 oracle plsql ref-cursor oracle11g
ref 游标可以像游标一样用于 for 循环吗?即喜欢
for i in cur_name
loop
dbms_output.put_line(i.column_name)
end loop;
Run Code Online (Sandbox Code Playgroud)
如果不可能那为什么?
您不能for像针对循环那样使用循环implicit/explicit cursors
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;
/
Run Code Online (Sandbox Code Playgroud)
你会得到一个错误
PLS-00221:“REF_CUR”不是过程或未定义
Aref cursor是指向 an 的指针,open cursor用于将打开的游标作为输出参数发送给客户端应用程序以循环遍历记录。
如果你想循环的话,
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;
/
Run Code Online (Sandbox Code Playgroud)
implicit/explicit cursors如果光标的生命周期在以下范围内,则可以使用*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;
/
Run Code Online (Sandbox Code Playgroud)
或者
BEGIN
for i in (SELECT table_name FROM all_tables WHERE ROWNUM < 5) loop
dbms_output.put_line(i.table_name);
end loop;
END;
/
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14392 次 |
| 最近记录: |