sql >> Base de Datos >  >> RDS >> Oracle

Iterar sobre una columna en PL/SQL

La forma más sencilla de iterar sobre las filas de una tabla en PL/SQL es hacer algo como

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

Alternativamente, puede obtener todos los valores de EID en una colección PL/SQL e iterar sobre la colección, como en este ejemplo

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;

Sin embargo, si su consulta puede devolver miles de filas, obtener todos los datos en la colección puede usar más memoria PGA de lo que le gustaría y es posible que deba obtener filas en fragmentos utilizando la cláusula LIMIT. Pero eso parecería estar adelantándonos en este momento.