title: PL SQL For Loop Sys_RefCursor
body: <p>I'm using Oracle 12c. In PL/SQL I can do this</p>
  
  <pre><code>set serveroutput on
  declare
  begin
    for x in (select 1 as y from dual) loop
      dbms_output.put_line(x.y);
    end loop;
  end;
  </code></pre>
  
  <p>I can also do this...</p>
  
  <pre><code>set serveroutput on
  declare
    cursor c1 is
      select 1 as y from dual;
  begin
    for x in c1 loop
      dbms_output.put_line(x.y);
    end loop;
  end;
  </code></pre>
  
  <p>So far, so good. But can I do this with a sys_refcursor? I am aware I could do it with a fetch/while loop but prefer the for loop syntax (I think it is a lot cleaner)...</p>
  
  <pre><code>set serveroutput on
  declare
    cur sys_refcursor;
  begin
    cur := Package.GetData(1234);
    fetch cur into y;
    while cur%FOUND loop
      dbms_output.put_line(y);
      fetch cur into y;
    end loop;
  end;
  </code></pre>
  
  <p>I want to do...</p>
  
  <pre><code>set serveroutput on
  declare
    cur sys_refcursor;
  begin
    cur := PACKAGE.GetData(1234); -- This returns a sys_refcursor
    for x in cur loop
      dbms_output.put_line(x.y);
    end loop;
  end;
  
  Error report -
  ORA-06550: line 5, column 16:
  PLS-00221: 'cur' is not a procedure or is undefined
  </code></pre>
  
  <p>Is there a mechanism to for loop through the sys_refcursor (rather than the fetch into/while loop)? Perhaps something new-fangled in 12c that I don't know about...?</p>