La sección de inicialización del paquete, como sugiere el nombre, se ejecuta cuando se inicializa el paquete. Esto sucede cuando se ejecuta el primer procedimiento/función del paquete después de que se establece la sesión o después de que el paquete se (re)compila. El propósito es inicializar el estado global del paquete que se puede usar durante la vigencia de la sesión. Todas las variables globales del paquete se mantienen y puede acceder a ellas más tarde.
Ejemplo:
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>
Verá que después de compilar el paquete, la sección de inicialización se ejecuta cuando el procedimiento foo es ejecutado. El paquete está inicializado ahora. Cualquier ejecución posterior de foo ejecuta solo el procedimiento.