sql >> Databasteknik >  >> RDS >> Oracle

Iterera över en kolumn i PL/SQL

Det enklaste sättet att iterera över raderna i en tabell i PL/SQL är att göra något liknande

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

Alternativt kan du hämta alla EID-värden till en PL/SQL-samling och iterera över samlingen, som i det här exemplet

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;

Om din fråga kan returnera tusentals rader, kan dock hämtning av all data till samlingen använda mer av PGA-minnet än du vill och du kan behöva hämta rader i bitar med hjälp av LIMIT-satsen. Men det verkar vara att gå före oss själva vid det här laget.



  1. MySQL SKAPA TABELL OM INTE FINNS -> Fel 1050

  2. Visa databaser/tabeller I UTFIL

  3. Varför kan inte indexerade vyer ha ett MAX()-aggregat?

  4. Förstå dataarkitekternas roll i datastyrning