Разделът за инициализация на пакет, както подсказва името, се изпълнява, когато пакетът се инициализира. Това се случва, когато първата процедура/функция от пакета се изпълни след установяване на сесия или след (пре)компилиране на пакета. Целта е да се инициализира глобалното състояние на пакета, което може да се използва по време на живота на сесията. Всички глобални променливи на пакета се запазват и имате достъп до тях по-късно.
Пример:
[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>
Виждате, че след като пакетът е компилиран, секцията за инициализация се изпълнява, когато процедурата foo
се изпълнява. Сега пакетът е инициализиран. Всяко последващо изпълнение на foo
изпълнява само процедурата.