名前が示すように、パッケージ初期化セクションは、パッケージが初期化されるときに実行されます。これは、セッションが確立された後、またはパッケージが(再)コンパイルされた後に、パッケージの最初のプロシージャ/関数が実行されたときに発生します。目的は、セッションの存続期間中に使用できるパッケージのグローバル状態を初期化することです。すべてのパッケージグローバル変数は保持され、後でアクセスできます。
例:
[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
の実行 プロシージャのみを実行します。