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:
example@sqldat.com_pdb_tcp> CREATE OR REPLACE PACKAGE test_package
2 IS
3 PROCEDURE foo;
4 END;
5 /
Package created.
example@sqldat.com_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.
example@sqldat.com_pdb_tcp> EXEC test_package.foo
Package initialized.
Procedure executed.
PL/SQL procedure successfully completed.
example@sqldat.com_pdb_tcp> EXEC test_package.foo
Procedure executed.
PL/SQL procedure successfully completed.
example@sqldat.com_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.