Oracle
 sql >> Base de données >  >> RDS >> Oracle

Itérer sur une colonne en PL/SQL

La façon la plus simple d'itérer sur les lignes d'une table en PL/SQL est de faire quelque chose comme

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

Alternativement, vous pouvez récupérer toutes les valeurs EID dans une collection PL/SQL et parcourir la collection, comme dans cet exemple

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;

Cependant, si votre requête peut renvoyer des milliers de lignes, la récupération de toutes les données dans la collection peut utiliser plus de mémoire PGA que vous ne le souhaitez et vous devrez peut-être récupérer les lignes par blocs à l'aide de la clause LIMIT. Mais cela semble prendre de l'avance sur nous à ce stade.