plsql Implicit "FOR loop" cursor


Example

BEGIN
  FOR x IN (SELECT * FROM emp WHERE sal < 100) LOOP
    dbms_Output.Put_Line(x.eName ||' '||x.sal||'... should REALLY be raised :D');
  END LOOP;
END;
/
  • First advantage is there is no tedious declaration to do (think of this horrible "CURSOR" thing you had in previous versions)
  • second advantage is you first build your select query, then when you have what you want, you immediately can access the fields of your query (x.<myfield>) in your PL/SQL loop
  • The loop opens the cursor and fetches one record at a time for every loop. At the end of the loop the cursor is closed.
  • Implicit cursors are faster because the interpreter's work grows as the code gets longer. The less code the less work the interpreter has to do.