sql >> Databáze >  >> RDS >> Oracle

Iterujte přes sloupec v PL/SQL

Nejjednodušší způsob, jak iterovat přes řádky v tabulce v PL/SQL, je udělat něco jako

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

Případně můžete načíst všechny hodnoty EID do kolekce PL/SQL a iterovat kolekci, jako v tomto příkladu

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;

Pokud však váš dotaz může vrátit tisíce řádků, může načítání všech dat do kolekce spotřebovat více paměti PGA, než byste chtěli, a možná budete muset načítat řádky po částech pomocí klauzule LIMIT. Ale zdá se, že to v tuto chvíli předbíháme.



  1. Hibernate + omezení klauzule Oracle IN, jak to vyřešit?

  2. Rails 3 s problémem mysql

  3. Deaktivace agenta v EM13c

  4. SQL UPDATE s LIKE