Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Iterar sobre uma coluna em PL/SQL


A maneira mais simples de iterar sobre as linhas em uma tabela em PL/SQL é fazer algo como
BEGIN
  FOR employees IN (SELECT emp_id FROM emp)
  LOOP
    dbms_output.put_line( employees.emp_id );
  END LOOP;
END;

Como alternativa, você pode buscar todos os valores EID em uma coleção PL/SQL e iterar sobre a coleção, como neste exemplo
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 sua consulta puder retornar milhares de linhas, no entanto, buscar todos os dados na coleção pode usar mais memória PGA do que você gostaria e pode ser necessário buscar linhas em partes usando a cláusula LIMIT. Mas isso parece estar nos antecipando neste momento.