制限事項:このトピックは、Windows 環境 (ローカル開発) にのみ適用されます。
アプリケーションが CALL 文を実行するときには、DB2 LUW サーバーは、文で指定されたパラメーターと値を使用してストアド プロシージャのパラメーター リストをビルドします。DB2 LUW サーバーは、システム テーブルからパラメーターに関する情報を取得します。詳細については、『DB2 LUW でのストアド プロシージャの定義』の節を参照してください。パラメーターは、次のいずれかのタイプで定義されます。
- IN
ストアド プロシージャに値を渡す、入力専用パラメーター
- OUT
ストアド プロシージャから呼び出し元のプログラムに値を返す、出力専用パラメーター
- INOUT
ストアド プロシージャに値を渡す、またはストアド プロシージャから値を返す、入出力パラメーター
ストアド プロシージャで 1 つ以上の出力専用パラメーターを設定できなかった場合、DB2 LUW サーバーは、ストアド プロシージャへのエントリ時に確立された値で、出力パラメーターを呼び出し元のプログラムに返します。COBOL は、3 つのパラメーター リスト規則をサポートしています。その他の言語は、その他の規則をサポートします。パラメーター リスト規則は、CREATE PROCEDURE 文で定義されたパラメーター スタイルに基づいて選択されます。
パラメーター スタイル
|
説明
|
SIMPLE
|
SIMPLE (または GENERAL) を使用して、呼び出し元のプログラムが、入力パラメーター (IN または INOUT) として NULL 値をストアド プロシージャに渡さないようにします。ストアド プロシージャは、CALL 文で渡される各パラメーターの変数を宣言する必要があります。
|
SIMPLE WITH NULLS
|
SIMPLE WITH NULLS (または GENERAL WITH NULLS) を使用して、呼び出し元のプログラムが、ストアド プロシージャに渡されるパラメーターに NULL 値を使用できるようにします。次の規則が適用されます。
- 次の 2 つの形式のいずれかを使用して、呼び出し元のプログラムの CALL 文の各パラメーターの後に、インジケーター変数が続くようにする必要があります。
- ホスト変数:インジケーター変数
または
- ホスト変数 INDICATOR:インジケーター変数
- ストアド プロシージャは、CALL 文で渡される各パラメーターの変数を宣言する必要があります。
- ストアド プロシージャは、CALL 文で渡される各パラメーターのインジケーター変数が含まれる、NULL インジケーター構造体を宣言する必要があります。
- エントリでは、ストアド プロシージャは入力パラメーターに関連付けられたすべてのインジケーター変数を調べて、NULL 値を含むパラメーターを特定する必要があります。
- 出口では、ストアド プロシージャは、出力変数に関連付けられたすべてのインジケーター変数に値を割り当てる必要があります。呼び出し側に対して NULL 値を返す出力変数のインジケーター変数には、負数が割り当てられている必要があります。それ以外の場合は、インジケーター変数にはゼロ (0) の値が割り当てられている必要があります。
|
注:DB2 LUW はストアド プロシージャと情報をやり取りするため、数値パラメーターを渡す場合は NATIVE を指定してください。例:
PROC(EMPNO, SQLCD)
DECLARE EMPNO CHAR(6),
SQLCD FIXED BIN(31) NATIVE,