サブプログラムの副作用
サブプログラムは、独自のローカル変数の値以外のものを変更する場合、副作用を伴います。たとえば、次のいずれかを変更するサブプログラムには、副作用があります。
-
独自の
OUT
またはIN
OUT
パラメータ -
グローバル変数
-
パッケージ内のパブリック変数
-
データベース表
-
データベース
-
外部の状態(たとえば、
DBMS_OUTPUT
の起動や電子メールの送信などによる変更)
副作用によって、問合せのパラレル処理が妨害されたり、処理順序に依存する(したがって、不確定な)結果が発生したり、ユーザー・セッションにまたがったパッケージ状態のメンテナンスが必要になります。
副作用を最小限に抑えることは、結果がキャッシュされるファンクションまたはストアド・ファンクションを定義してSQL文を起動する場合に特に重要です。
関連項目:
SQL文から起動されたPL/SQLファンクションでの副作用の制御の詳細は、『Oracle Database開発ガイド』を参照してください。