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.