ネストしたサブプログラム、パッケージ・サブプログラムおよびスタンドアロン・サブプログラム
サブプログラムは、PL/SQLブロック内(別のサブプログラムの可能性もあります)、パッケージ内またはスキーマ・レベルで作成できます。
PL/SQLブロック内で作成されるサブプログラムは、ネストしたサブプログラムです。サブプログラムは、宣言と定義を同時に行うか、または最初に宣言して、後で同じブロック内で定義することができます(「前方宣言」を参照)。ネストしたサブプログラムは、スタンドアロン・サブプログラムまたはパッケージ・サブプログラム内でネストした場合にのみ、データベースに格納されます。
パッケージ内で作成されるサブプログラムは、パッケージ・サブプログラムです。パッケージ仕様部で宣言し、パッケージ本体で定義します。パッケージを削除するまでデータベースに格納されます。(パッケージについては、「PL/SQLパッケージ」を参照してください。)
スキーマ・レベルで作成されるサブプログラムは、スタンドアロン・サブプログラムです。CREATE
FUNCTION
文またはCREATE
PROCEDURE
文を使用して作成できます。DROP
FUNCTION
文またはDROP
PROCEDURE
文を使用して削除するまでデータベースに格納されます。(これらの文の詳細は、「ストアドPL/SQLユニット用のSQL文」を参照してください。)
ストアド・サブプログラムは、パッケージ・サブプログラムまたはスタンドアロン・サブプログラムのいずれかです。ストアド・サブプログラムはAUTHID
およびACCESSIBLE
BY
句の影響を受けます。これらはCREATE
FUNCTION
、CREATE
PROCEDURE
およびCREATE
PACKAGE
文で使用されます。AUTHID
句はサブプログラムが実行時に発行するSQL文の名前解決と権限チェックに影響します(詳細は「実行者権限および定義者権限(AUTHIDプロパティ)」)を参照してください。ACCESSIBLE
BY
句は、サブプログラムにアクセスできるPL/SQLユニットのホワイト・リストを指定します。