次の結果セットを、開いているカーソルで利用できるようにします。
構文:
>>---EXEC SQL---.------------.--->
+-AT db_name-+
>--GET NEXT RESULT SET FOR---cursor_name---END-EXEC---><
パラメーター:
AT db_name |
DECLARE DATABASE を使用して宣言されたデータベースの名前。この句は必須ではありません。省略すると、DECLARE CURSOR 文に関連付けられている接続に自動的に切り替わります (その接続が現在の接続とは異なる場合。DECLARE CURSOR 文の実行中のみ有効)。 |
cursor_name |
すでに宣言済みの、開いたカーソル。 |
例:
exec sql declare c cursor for
call TestProc2(:hv-country)
end-exec
exec sql open c end-exec
display " "
display "First result set from proc"
display " "
perform until exit
exec sql fetch c into
:CustomerID, :Company, :City
end-exec
if sqlcode = 100 or sqlcode < 0
exit perform
end-if
display CustomerID " " City
end-perform
*> Always get SQLCODE 100 at the end of a result set
*> until you close the cursor or ask for another result set
exec sql fetch c into
:CustomerID, :Company, :City
end-exec
if sqlcode not = 100
display "FAIL: Fetch after SQLCODE 100 OK"
end-if
*> Ask for another result set, SQLCODE 100 if there isn't one
exec sql get next result set for c end-exec
display " "
display "Second result set from proc"
display " "
perform until exit
exec sql fetch c into
:CustomerID, :Company, :City
end-exec
if sqlcode = 100 or sqlcode < 0
exit perform
end-if
display CustomerID " " City
end-perform
説明:
DIALECT=MAINFRAME を使用せずにコンパイルされたクライアント アプリケーションでは、複数の結果セットをストアド プロシージャから取得する場合、または複数の SELECT 文で定義される DECLARE CURSOR 文から取得する場合に、GET NEXT RESULT SET によって次の結果セットを利用できます。
追加の結果セットがない場合、GET NEXT RESULT SET は 100 に等しい SQLCODE を返し SQLSTATE を 02000 に設定します。