sql >> Database teknologi >  >> RDS >> Oracle

Gentag over en kolonne i PL/SQL

Den enkleste måde at iterere over rækkerne i en tabel i PL/SQL er at gøre noget som

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

Alternativt kan du hente alle EID-værdierne ind i en PL/SQL-samling og iterere over samlingen, som i dette eksempel

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;

Hvis din forespørgsel kan returnere tusindvis af rækker, kan hentning af alle data til samlingen dog bruge mere af PGA-hukommelsen, end du ønsker, og du skal muligvis hente rækker i bidder ved hjælp af LIMIT-klausulen. Men det ser ud til at gå foran os selv på dette tidspunkt.



  1. Er du sorteret? Tips vedrørende T-SQL-vinduebestilling

  2. Find, prioriter og løs SQL Server-problemer på få minutter

  3. Apache Spark:JDBC-forbindelse virker ikke

  4. MYSQL deaktiver Auto-trim