Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Über eine Spalte in PL/SQL iterieren

Der einfachste Weg, die Zeilen in einer Tabelle in PL/SQL zu durchlaufen, ist etwas wie

BEGIN
  FOR employees IN (SELECT emp_id FROM emp)
  LOOP
    dbms_output.put_line( employees.emp_id );
  END LOOP;
END;

Alternativ könnten Sie alle EID-Werte in eine PL/SQL-Sammlung abrufen und die Sammlung durchlaufen, wie in diesem Beispiel

DECLARE
  TYPE emp_id_tbl IS TABLE OF emp.emp_id%type;
  l_emp_ids emp_id_tbl ;
BEGIN
  SELECT emp_id
    BULK COLLECT INTO l_emp_ids 
    FROM emp;

  FOR i IN l_emp_ids .FIRST .. l_empnos.LAST
  LOOP
    dbms_output.put_line( l_emp_ids (i) );
  END LOOP;
END;

Wenn Ihre Abfrage jedoch Tausende von Zeilen zurückgeben kann, kann das Abrufen aller Daten in die Sammlung mehr PGA-Speicher beanspruchen, als Sie möchten, und Sie müssen möglicherweise Zeilen in Blöcken mithilfe der LIMIT-Klausel abrufen. Aber das scheint uns an dieser Stelle zu weit voraus zu sein.