Oracle for循环中的ref游标

Oracle for循环中的ref游标,oracle,plsql,oracle11g,ref-cursor,Oracle,Plsql,Oracle11g,Ref Cursor,是否可以在for循环类游标中使用ref游标?i、 e.喜欢 for i in cur_name loop dbms_output.put_line(i.column_name) end loop; 如果不可能,那么为什么?您不能像对隐式/显式游标那样使用for循环 如果光标的生命周期在*块中,则可以使用隐式/显式光标* 或 你试的时候发生了什么?顺便说一下,是的,这是可能的。但这真的毫无意义。看见 declare ref_cur sys_refcursor; BEGIN O

是否可以在for循环类游标中使用ref游标?i、 e.喜欢

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;
/
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;
/
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;
/