Typy tabulek PL SQL jsou ve skutečnosti kolekce, jako pole. Pomocí kolekcí PL SQL můžete efektivně zpracovávat hromadná data. V tomto příspěvku vás naučím velmi základní a nejčastěji používané příkazy pro kolekce typů tabulek PL SQL. Níže je uveden typ tabulky v příkladu Oracle PL SQL.
Nejprve jej musíte deklarovat v sekci deklarace bloku PL SQL. Zde je syntaxe s příkladem:
Typ tabulky v příkladu SQL Oracle PL
1. Deklarujte typy tabulek PL SQL
Type any_table_type is table of emp%rowtype index by binary_integer; emp_rec any_table_type;
Výše uvedené příkazy deklarují typ tabulky any_table_type typu řádku tabulky emp a poté se inicializují pomocí emp_rec. Po deklaraci mu můžete ručně přiřadit hodnoty. Níže je příklad:
2. Přiřadit hodnoty k typům tabulek 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;
Protože tabulky PL SQL jsou jako pole, hodnoty by měly být přiřazeny zadáním čísla prvku pole, jak je uvedeno výše. Níže je uveden příklad, jak odstranit z kolekcí typů tabulek PL SQL.
3. Odstranění prvků z typů tabulek 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;
Výše uvedený příklad odstraní první prvek a vytiskne pouze druhý. Když provedete výše uvedený blok, výstup bude:
xyz
Procedura PL/SQL byla úspěšně dokončena.
Chcete-li odstranit všechny prvky z typu tabulky PL SQL, níže je příklad:
emp_rec.delete;
4. Naplnění typů tabulek PL SQL pomocí hromadného sběru
Níže je uveden příklad typu tabulky v oracle PL SQL pro načtení dat z tabulky emp a poté naplní typ tabulky PL SQL pomocí hromadného sběru a poté aktualizuje tabulku emp pomocí FORALL. Zde je příklad:
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;
Můžete také zkontrolovat můj PL SQL Procedure Tool a vygenerovat skript pro váš vývoj.