サブプログラムの副作用

サブプログラムは、独自のローカル変数の値以外のものを変更する場合、副作用を伴います。たとえば、次のいずれかを変更するサブプログラムには、副作用があります。

  • 独自のOUTまたはIN OUTパラメータ

  • グローバル変数

  • パッケージ内のパブリック変数

  • データベース表

  • データベース

  • 外部の状態(たとえば、DBMS_OUTPUTの起動や電子メールの送信などによる変更)

副作用によって、問合せのパラレル処理が妨害されたり、処理順序に依存する(したがって、不確定な)結果が発生したり、ユーザー・セッションにまたがったパッケージ状態のメンテナンスが必要になります。

副作用を最小限に抑えることは、結果がキャッシュされるファンクションまたはストアド・ファンクションを定義してSQL文を起動する場合に特に重要です。

関連項目:

SQL文から起動されたPL/SQLファンクションでの副作用の制御の詳細は、『Oracle Database開発ガイド』を参照してください。