Oracle
 sql >> Database >  >> RDS >> Oracle

Iterare su una colonna in PL/SQL

Il modo più semplice per scorrere le righe in una tabella in PL/SQL è eseguire qualcosa del tipo

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

In alternativa, puoi recuperare tutti i valori EID in una raccolta PL/SQL e scorrere la raccolta, come in questo esempio

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;

Se la tua query può restituire migliaia di righe, tuttavia, il recupero di tutti i dati nella raccolta potrebbe utilizzare più memoria PGA di quanto desideri e potrebbe essere necessario recuperare le righe in blocchi utilizzando la clausola LIMIT. Ma a questo punto sembrerebbe essere un passo avanti a noi stessi.