PL SQL-tabelltyper är faktiskt samlingar, som en array. Med hjälp av PL SQL-samlingar kan du bearbeta bulkdata effektivt. I det här inlägget kommer jag att lära dig mycket grundläggande och mest använda kommandon för PL SQL-tabelltypsamlingar. Nedan är tabelltypen i Oracle PL SQL-exempel.
Först måste du deklarera det i deklarationsavsnittet i PL SQL-blocket. Här är syntaxen med exempel:
Tabelltyp i Oracle PL SQL-exempel
1. Deklarera PL SQL-tabelltyper
Type any_table_type is table of emp%rowtype index by binary_integer; emp_rec any_table_type;
Ovanstående kommandon kommer att deklarera tabelltypen any_table_type av emp table radtyp och initieras sedan med emp_rec. Efter deklaration kan du tilldela värdena manuellt till den. Nedan är exemplet:
2. Tilldela värden till PL SQL-tabelltyper
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;
Eftersom PL SQL-tabeller är arrayliknande, så bör värdena tilldelas genom att ange arrayelementnummer, som visas ovan. Nedan följer ett exempel på hur du tar bort från PL SQL-tabelltypsamlingar.
3. Ta bort element från PL SQL-tabelltyper
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;
Ovanstående exempel tar bort det första elementet och skriver bara ut det andra. När du kör blocket ovan kommer utdata att vara:
xyz
PL/SQL-proceduren har slutförts.
För att ta bort alla element från PL SQL-tabelltyp, nedan är exemplet:
emp_rec.delete;
4. Fylla i PL SQL-tabelltyper med Bulk Collect
Nedan är tabelltypen i oracle PL SQL exempel för att hämta data från emp-tabellen och sedan fyller den i PL SQL-tabelltypen med Bulk Collect och uppdaterar sedan emp-tabellen med FORALL. Här är exemplet:
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;
Du kan också kontrollera mitt PL SQL Procedure Tool för att generera skriptet för din utveckling.