PL SQL tabeltyper er faktisk samlinger, ligesom en matrix. Ved hjælp af PL SQL-samlinger kan du behandle bulkdata effektivt. I dette indlæg vil jeg lære dig meget grundlæggende og oftest brugte kommandoer til PL SQL tabel type samlinger. Nedenfor er tabeltypen i Oracle PL SQL eksempel.
Først skal du erklære det i deklareringsafsnittet i PL SQL-blokken. Her er syntaksen med eksempel:
Tabeltype i Oracle PL SQL-eksempel
1. Erklære PL SQL-tabeltyper
Type any_table_type is table of emp%rowtype index by binary_integer; emp_rec any_table_type;
Ovenstående kommandoer vil erklære tabeltypen any_table_type af emp table row type og derefter initialisere med emp_rec. Efter erklæringen kan du manuelt tildele værdierne til den. Nedenfor er eksemplet:
2. Tildel værdier til PL SQL-tabeltyper
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;
Fordi PL SQL-tabeller er array-lignende, så værdierne bør tildeles ved at give array-elementnummer, som vist ovenfor. Nedenfor er eksemplet på, hvordan du sletter fra PL SQL-tabeltypesamlinger.
3. Sletning af elementer fra PL SQL-tabeltyper
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;
Ovenstående eksempel vil slette det første element og udskrive kun det andet. Når du vil udføre ovenstående blok, vil outputtet være:
xyz
PL/SQL-proceduren er gennemført.
For at slette alle elementer fra PL SQL-tabeltypen er eksemplet nedenfor:
emp_rec.delete;
4. Udfyldning af PL SQL-tabeltyper ved hjælp af Bulk Collect
Nedenfor er tabeltypen i oracle PL SQL eksemplet for at hente dataene fra emp-tabellen, og derefter vil den udfylde PL SQL-tabeltypen ved hjælp af Bulk Collect, og derefter opdatere emp-tabellen ved hjælp af FORALL. Her er eksemplet:
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 også tjekke mit PL SQL Procedure Tool for at generere scriptet til din udvikling.