Oracle
 sql >> база данни >  >> RDS >> Oracle

Итериране на колона в PL/SQL

Най-простият начин за итериране на редовете в таблица в PL/SQL е да направите нещо като

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

Като алтернатива можете да извлечете всички стойности на EID в PL/SQL колекция и да итерирате колекцията, както в този пример

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;

Ако вашата заявка обаче може да върне хиляди редове, извличането на всички данни в колекцията може да използва повече от PGA паметта, отколкото бихте искали, и може да се наложи да извличате редове на части, като използвате клаузата LIMIT. Но изглежда, че на този етап изпреварваме нещата.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Заявката, включваща външни присъединявания, се държи по различен начин в Oracle 12c

  2. Oracle spool файл към .txt файл. Опции за заглавия

  3. История на базата данни за използване от клиента

  4. Oracle - комбинаторна пермутация на низове

  5. Поддържане на база данни на приложения агностична (ADO.NET срещу капсулираща логика на DB)