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

Tipo di tabella nell'esempio SQL di Oracle PL

I tipi di tabella PL SQL sono in realtà raccolte, come un array. Con l'aiuto delle raccolte PL SQL, puoi elaborare i dati in blocco in modo efficiente. In questo post, ti insegnerò i comandi di base e usati più di frequente per le raccolte di tipi di tabelle PL SQL. Di seguito è riportato il tipo di tabella nell'esempio Oracle PL SQL.

Per prima cosa devi dichiararlo nella sezione dichiara del blocco PL SQL. Ecco la sintassi con l'esempio:

Tipo di tabella nell'esempio Oracle PL SQL

1. Dichiara tipi di tabelle SQL PL

Type any_table_type is table of emp%rowtype index by binary_integer;
emp_rec any_table_type;

I comandi precedenti dichiareranno il tipo di tabella any_table_type del tipo di riga della tabella emp e quindi inizializzeranno con emp_rec. Dopo la dichiarazione, è possibile assegnargli manualmente i valori. Di seguito è riportato l'esempio:

2. Assegna valori ai tipi di tabelle PL SQL

set serveroutput on;
declare
Type any_table_type is table of emp%rowtype 
    index by binary_integer;
emp_rec any_table_type;
begin
emp_rec(1).ename := 'abc'; /* assigning values */
emp_rec(2).ename := 'xyz';
dbms_output.put_line(emp_rec(1).ename); /* accessing values */
dbms_output.put_line(emp_rec(2).ename);
end;

Poiché le tabelle PL SQL sono come array, i valori dovrebbero essere assegnati fornendo il numero dell'elemento dell'array, come mostrato sopra. Di seguito è riportato un esempio su come eliminare da raccolte di tipi di tabella SQL PL.

3. Eliminazione di elementi dai tipi di tabelle PL SQL

set serveroutput on;
declare
Type any_table_type is table of emp%rowtype index by binary_integer;
emp_rec any_table_type;
begin
emp_rec(1).ename := 'abc';
emp_rec(2).ename := 'xyz';
emp_rec.delete(1); /* will delete first element */
for i in emp_rec.first .. emp_rec.last loop /* loop through the array */
dbms_output.put_line(emp_rec(i).ename);
end loop;
end;

L'esempio sopra eliminerà il primo elemento e stamperà solo il secondo. Quando eseguirai il blocco sopra, l'output sarà:

xyz
Procedura PL/SQL completata con successo.

Per eliminare tutti gli elementi dal tipo di tabella PL SQL, di seguito è riportato l'esempio:

emp_rec.delete;

4. Popolamento di tipi di tabelle PL SQL utilizzando la raccolta in blocco

Di seguito è riportato il tipo di tabella nell'esempio Oracle PL SQL per recuperare i dati dalla tabella emp e quindi popolerà il tipo di tabella PL SQL utilizzando Bulk Collect e quindi aggiornerà la tabella emp utilizzando FORALL. Ecco l'esempio:

set serveroutput on;

DECLARE
   CURSOR c
   IS
      SELECT * FROM emp;

   TYPE any_table_type IS TABLE OF emp%ROWTYPE
                             INDEX BY BINARY_INTEGER;

   emp_rec   any_table_type;
BEGIN
   OPEN c;

   FETCH c
   BULK COLLECT INTO emp_rec;

   CLOSE c;

   FORALL i IN emp_rec.FIRST .. emp_rec.LAST
      UPDATE emp
         SET comm = emp_rec (i).sal * 10 / 100
       WHERE empno = emp_rec (i).empno;

   COMMIT;
END;

Puoi anche controllare il mio PL SQL Procedure Tool per generare lo script per il tuo sviluppo.