Paketinitieringssektionen som namnet antyder exekveras när paketet initieras. Detta händer när den första proceduren/funktionen från paketet exekveras efter att sessionen har upprättats eller efter att paketet har (åter)kompilerats. Syftet är att initiera det globala tillståndet för paketet som kan användas under sessionens livstid. Alla globala paketvariabler behålls och du kan komma åt dem senare.
Exempel:
[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>
Du ser att efter att paketet har kompilerats exekveras initialiseringssektionen när proceduren foo
avrättas. Paketet är initierat nu. Varje efterföljande körning av foo
exekverar endast proceduren.