CALLDBPROC dbproc ddm-name
|
||||||||||||
M
|
||||||||||||
[USING ]
|
parameter | AD=
|
O
|
|||||||||
A
|
||||||||||||
[RESULT SETS ] result-set]
|
||||||||||||
[GIVING sqlcode]
|
||||||||||||
NATURAL
|
||||||||||||
[CALLMODE =NONE ]
|
このドキュメントでは、次のトピックについて説明します。
構文図で使用されている記号については、「構文記号」を参照してください。
CALLDBPROC
ステートメントは、Natural からアクセスできる SQL データベースシステムのストアドプロシージャを呼び出すために使用します。
ストアドプロシージャは、Natural サブプログラムまたは Natural 以外のプログラミング言語で記述されたプログラムのいずれかです。
CALLDBPROC
は、呼び出し側オブジェクトとストアドプロシージャ間のパラメータの受け渡しに加えて、"結果セット" をサポートします。結果セットはストアドプロシージャから呼び出し側オブジェクトへ、パラメータを使用するよりも大量のデータを返すことを可能にします。
結果セットは、ストアドプロシージャによって作成され、呼び出し側オブジェクトで READ RESULT SET
ステートメントを使用して読み込んだり処理したりすることのできる "一時的な結果テーブル" です。
注意:
一般的に、ストアドプロシージャの呼び出しは Natural サブプログラムの呼び出しと比較されることがあります。CALLDBPROC
ステートメントを実行するとき、制御はストアドプロシージャに渡され、ストアドプロシージャの処理後、呼び出し側オブジェクトに戻り、CALLDBPROC
ステートメントの次のステートメントに処理が続きます。
dbproc |
呼び出すストアドプロシージャ:
dbproc として、呼び出すストアドプロシージャの名前を指定します。 その名前は英数字変数または定数(アポストロフィで囲む)として指定できます。 名前はターゲットデータベースシステムのストアドプロシージャの命名規則に従う必要があります。 ストアドプロシージャが Natural サブプログラムである場合、実際のプロシージャ名は 8 文字以下である必要があります。 |
|
---|---|---|
ddm-name |
Natural データ定義モジュールの名前:
DDM の名前は、ストアドプロシージャを実行するデータベースの"アドレス"を示すように指定する必要があります。 詳細については、「ddm-name」を参照してください。 |
|
[USING] parameter |
渡されるパラメータ:
parameter として、呼び出し側オブジェクトからストアドプロシージャに渡されるパラメータを指定できます。 parameter には次のものを使用できます。
詳細については、host-variable を参照してください。 |
|
AD= |
属性定義: parameter が host-variable の場合、次のようにマークできます。
|
|
AD=O |
変更不可。セッションパラメータ (DB2 for z/OS での対応するプロシージャ表記: |
|
AD=M |
変更可。セッションパラメータ (DB2 for z/OS での対応するプロシージャ表記: |
|
AD=A |
入力のみ。セッションパラメータ (DB2 for z/OS での対応するプロシージャ表記: |
|
parameter が定数の場合は、AD を明示的に指定することはできません。 定数には常に AD=O が適用されます。
|
||
result-set |
結果セットロケータ変数用のフィールド:
result-set として、結果セットロケータを返すフィールドを指定します。 結果セットには、フォーマット/長さ I4 の変数を指定する必要があります。 結果セット変数の値は、結果セットを識別し、すぐ次の result-set の値の順序は、ストアドプロシージャから返される結果セットの順序に対応します。 結果セットの内容は、次の 結果セットが返されない場合は、対応する結果セット変数に "0" が含まれます。 結果セットは 1 つだけ指定できます。 |
|
GIVING sqlcode |
GIVING sqlcode オプション:
このオプションは、ストアドプロシージャを呼び出す SQL このオプションを指定し、ストアドプロシージャの SQL コードが "0" でない場合、Natural エラーメッセージは発行されません。 この場合、SQL コード値に対して取られる動作は、呼び出し側の Natural オブジェクト内でコード化されている必要があります。 sqlcode フィールドには、フォーマット/長さ I4 の変数を指定する必要があります。
|
|
CALLMODE=NONE |
CALLMODE パラメータ
Natural for Windows、Natural for UNIX、および Natural for OpenVMS では、 |
次の例は、ストアドプロシージャ DEMO_PROC
を呼び出して、PERSON
テーブルの特定範囲内の名前をすべて取得する Natural プログラムを示しています。
3 つのパラメータフィールドが DEMO_PROC
に渡されます。1 番目と 2 番目のパラメータは、名前の範囲の開始値と終了値をストアドプロシージャに渡します。3 番目のパラメータは、条件に一致する名前を受け取ります。
この例では、名前は、READ RESULT SET
ステートメントで処理される結果セットに返されます。
DEFINE DATA LOCAL 1 PERSON VIEW OF DEMO-PERSON 2 PERSON_ID 2 LAST_NAME 1 #BEGIN (A2) INIT <'AB'> 1 #END (A2) INIT <'DE'> 1 #RESPONSE (I4) 1 #RESULT (I4) 1 #NAME (A20) END-DEFINE ... CALLDBPROC 'DEMO_PROC' DEMO-PERSON #BEGIN (AD=O) #END (AD=O) #NAME (AD=A) RESULT SETS #RESULT GIVING #RESPONSE READ RESULT SET #RESULT INTO #NAME FROM DEMO-PERSON GIVING #RESPONSE DISPLAY #NAME END-RESULT ... END