パラメーター・モード (PL/SQL)
PL/SQL プロシージャー・パラメーターは、IN、OUT、または IN OUT の 3 つのモードのいずれかに設定されます。 PL/SQL 関数パラメーターは、IN にしか設定できません。
- IN 仮パラメーターは、デフォルト値で明示的に初期設定されたのでない限り、その仮パラメーターを呼び出したときの実パラメーターに初期設定されます。 IN パラメーターは、呼び出されたプログラム内で参照できます。ただし、呼び出されたプログラムでは、新規値を IN パラメーターに割り当てることはできません。 呼び出し側プログラムに制御が戻ると、実パラメーターには必ず、呼び出し前に設定された値が入っています。
- OUT 仮パラメーターは、それを呼び出したときの実パラメーターに初期設定されます。 呼び出されたプログラムでは、仮パラメーターを参照し、そこに新規値を割り当てることができます。 呼び出されたプログラムの終了時に例外が出されなかった場合、実パラメーターは、仮パラメーターが最後に設定されたときの値を取ります。 処理済みの例外が発生すると、実パラメーターは、仮パラメーターが最後に設定されたときの値を取ります。 処理できない例外が発生すると、実パラメーターの値は、呼び出し前の値のままとなります。
- IN パラメーターと同様、IN OUT 仮パラメーターは、それを呼び出したときの実パラメーターに初期設定されます。 OUT パラメーターと同様、 IN OUT 仮パラメーターは、呼び出されたプログラムで変更可能です。 呼び出されたプログラムの終了時に例外が出されなかった場合、 仮パラメーターの最後の値が、呼び出し側プログラムの実パラメーターに渡されます。 処理済みの例外が発生すると、実パラメーターは、仮パラメーターが最後に設定されたときの値を取ります。 処理できない例外が発生すると、実パラメーターの値は、呼び出し前の値のままとなります。
これらの動作を要約すると、表 1のようになります。
| モード・プロパティー | IN | IN OUT | OUT |
|---|---|---|---|
| 仮パラメーターの初期設定値 | 実パラメーター値 | 実パラメーター値 | 実パラメーター値 |
| 呼び出されたプログラムで仮パラメーターを変更可能 | いいえ | はい | はい |
| 呼び出されたプログラムの正常終了後に実パラメーターに格納される値 | 呼び出し前の元の実パラメーター値 | 仮パラメーターの最新値 | 仮パラメーターの最新値 |
| 呼び出されたプログラムで処理済みの例外が出された後に実パラメーターに格納される値 | 呼び出し前の元の実パラメーター値 | 仮パラメーターの最新値 | 仮パラメーターの最新値 |
| 呼び出されたプログラムで処理できない例外が出された後に実パラメーターに格納される値 | 呼び出し前の元の実パラメーター値 | 呼び出し前の元の実パラメーター値 | 呼び出し前の元の実パラメーター値 |