A seção de inicialização do pacote, como o nome sugere, é executada quando o pacote é inicializado. Isso acontece quando o primeiro procedimento/função do pacote é executado após a sessão ser estabelecida ou após o pacote ser (re)compilado. O objetivo é inicializar o estado global do pacote que pode ser usado durante a vida útil da sessão. Todas as variáveis globais do pacote são mantidas e você pode acessá-las posteriormente.
Exemplo:
[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>
Você vê que depois que o pacote é compilado a seção de inicialização é executada quando o procedimento
foo
É executado. O pacote é inicializado agora. Qualquer execução subsequente de foo
executa apenas o procedimento.