CALLDBPROC dbproc ddm-name |
|||||||||||||
M |
|||||||||||||
[USING ]
|
parameter | AD= |
O |
||||||||||
A |
|||||||||||||
[RESULT SETS result-set]
|
|||||||||||||
[GIVING sqlcode]
|
このドキュメントでは、次のトピックについて説明します。
構文図で使用されている記号については、「構文記号」を参照してください。
関連機能グループ:データベースへのアクセスと更新
CALLDBPROC
ステートメントは、Natural からアクセスできる SQL データベースシステムのストアドプロシージャを呼び出すために使用します。
ストアドプロシージャは、Natural サブプログラム(DB2 for z/OS から実行されたときのみ利用できます)または Natural 以外のプログラミング言語で記述されたプログラムのいずれかです。
CALLDBPROC
は、呼び出し側オブジェクトとストアドプロシージャ間のパラメータの受け渡しに加えて、"結果セット" をサポートします。結果セットはストアドプロシージャから呼び出し側オブジェクトへ、パラメータを使用するよりも大量のデータを返すことを可能にします。
結果セットは、ストアドプロシージャによって作成され、呼び出し側オブジェクトで READ
RESULT SET
ステートメントを使用して読み込んだり処理したりすることのできる "一時的な結果テーブル" です。
注意:
一般的に、ストアドプロシージャの呼び出しは Natural サブプログラムの呼び出しと比較されることがあります。CALLDBPROC
ステートメントを実行するとき、制御はストアドプロシージャに渡され、ストアドプロシージャの処理後、呼び出し側オブジェクトに戻り、CALLDBPROC
ステートメントの次のステートメントに処理が続きます。
構文要素 | 説明 | |
---|---|---|
dbproc |
呼び出すストアドプロシージャ:
名前はターゲットデータベースシステムのストアドプロシージャの命名規則に従う必要があります。 ストアドプロシージャが Natural サブプログラムである場合、実際のプロシージャ名は 8 文字以下である必要があります。 |
|
ddm-name |
Natural データ定義モジュールの名前:
DDM の名前は、ストアドプロシージャを実行するデータベースの"アドレス"を示すように指定する必要があります。詳細については、「 |
|
[USING]
parameter |
渡されるパラメータ:
詳細については、 |
|
AD= |
属性定義:
|
|
AD=O |
変更不可。セッションパラメータ (DB2 for z/OS での対応するプロシージャ表記: |
|
AD=M |
変更可。セッションパラメータ (DB2 for z/OS での対応するプロシージャ表記: |
|
AD=A |
入力のみ。セッションパラメータ (DB2 for z/OS での対応するプロシージャ表記: |
|
parameter が定数の場合は、AD を明示的に指定することはできません。定数には常に AD=O が適用されます。
|
||
RESULT SETS result-set |
結果セットロケータ変数用のフィールド:
結果セットには、フォーマット/長さ I4 の変数を指定する必要があります。 結果セット変数の値は、結果セットを識別し、すぐ次の
結果セットの内容は、次の 結果セットが返されない場合は、対応する結果セット変数に 結果セットは 1 つだけ指定できます。 |
|
GIVING
sqlcode |
GIVING sqlcode オプション:
このオプションは、ストアドプロシージャを呼び出す SQL このオプションを指定し、ストアドプロシージャの SQLCODE が
|
次の例は、ストアドプロシージャ 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