Sekcja inicjalizacji pakietu, jak sugeruje nazwa, jest wykonywana podczas inicjalizacji pakietu. Dzieje się tak, gdy pierwsza procedura/funkcja z pakietu jest wykonywana po ustanowieniu sesji lub po (re)kompilacji pakietu. Celem jest zainicjowanie globalnego stanu pakietu, który może być używany podczas trwania sesji. Wszystkie globalne zmienne pakietu są zachowywane i możesz uzyskać do nich dostęp później.
Przykład:
[email protected]_pdb_tcp> CREATE OR REPLACE PACKAGE test_package
2 IS
3 PROCEDURE foo;
4 END;
5 /
Package created.
[email protected]_pdb_tcp> CREATE OR REPLACE PACKAGE BODY test_package
2 IS
3 PROCEDURE foo
4 IS
5 BEGIN
6 DBMS_OUTPUT.PUT_LINE('Procedure executed. ');
7 END;
8
9 BEGIN
10 DBMS_OUTPUT.PUT_LINE('Package initialized. ');
11 END;
12 /
Package body created.
[email protected]_pdb_tcp> EXEC test_package.foo
Package initialized.
Procedure executed.
PL/SQL procedure successfully completed.
[email protected]_pdb_tcp> EXEC test_package.foo
Procedure executed.
PL/SQL procedure successfully completed.
[email protected]_pdb_tcp>
Widzisz, że po skompilowaniu pakietu sekcja inicjująca jest wykonywana, gdy procedura foo
jest wykonywany. Pakiet jest teraz inicjowany. Każde kolejne wykonanie foo
wykonuje tylko procedurę.