Typy tabel PL SQL są w rzeczywistości kolekcjami, podobnie jak tablica. Z pomocą kolekcji PL SQL możesz wydajnie przetwarzać dane zbiorcze. W tym poście nauczę Cię bardzo podstawowych i najczęściej używanych poleceń dla kolekcji typu tabelarycznego PL SQL. Poniżej znajduje się typ tabeli w przykładzie Oracle PL SQL.
Najpierw musisz to zadeklarować w sekcji deklaracji bloku PL SQL. Oto składnia z przykładem:
Typ tabeli w przykładzie Oracle PL SQL
1. Zadeklaruj typy tabel PL SQL
Type any_table_type is table of emp%rowtype index by binary_integer; emp_rec any_table_type;
Powyższe polecenia zadeklarują typ tabeli any_table_type typu wiersz tabeli emp, a następnie zainicjują za pomocą emp_rec. Po zadeklarowaniu można ręcznie przypisać do niego wartości. Poniżej znajduje się przykład:
2. Przypisz wartości do typów tabel 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;
Ponieważ tablice PL SQL są podobne do tablic, więc wartości należy przypisać podając numer elementu tablicy, jak pokazano powyżej. Poniżej znajduje się przykład, jak usunąć z kolekcji typów tabel PL SQL.
3. Usuwanie elementów z typów tabel 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;
Powyższy przykład usunie pierwszy element i wydrukuje tylko drugi. Gdy wykonasz powyższy blok, wynik będzie następujący:
xyz
Procedura PL/SQL zakończona pomyślnie.
Aby usunąć wszystkie elementy z typu tabeli PL SQL, poniżej znajduje się przykład:
emp_rec.delete;
4. Wypełnianie typów tabel PL SQL za pomocą zbiorczego zbierania
Poniżej znajduje się typ tabeli w przykładzie Oracle PL SQL, aby pobrać dane z tabeli emp, a następnie zapełni typ tabeli PL SQL za pomocą funkcji Bulk Collect, a następnie zaktualizuje tabelę emp za pomocą FORALL. Oto przykład:
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;
Możesz również sprawdzić moje narzędzie PL SQL Procedure Tool, aby wygenerować skrypt dla swojego rozwoju.