リリース情報


36.7 第 5 章 DB2 CLI 関数

36.7.1 SQLBindFileToParam - LOB ファイル参照を LOB パラメーターにバインド

SQLBindFileToParam() CLI 関数の最後のパラメーター、IndicatorValue は 現在 「出力 (据え置き)」と書かれています。 これは 「入力 (据え置き)」となります。

36.7.2 SQLNextResult - 次の結果セットを別のステートメント・ハンドルに関連付ける

次のテキストが第 5 章、「"DB2 CLI 関数"」に追加されました。

36.7.2.1 目的

仕様: DB2 CLI 7.x

36.7.2.2 構文

SQLRETURN   SQLNextResult	(SQLHSTMT	StatementHandle1
			 	                         SQLHSTMT	StatementHandle2);

36.7.2.3 関数の引き数


表 25. SQLNextResult 引き数
データ・タイプ 引き数 使用 記述
SQLHSTMT StatementHandle 入力 ステートメント・ハンドル。
SQLHSTMT StatementHandle 入力 ステートメント・ハンドル。

36.7.2.4 使用法

ストアード・プロシージャーは、終了後にカーソルをオープンしたままにしておくことで、 複数の結果セットを返します。最初の結果セットは常に、ストアード・プロシージャーを 呼び出したステートメント・ハンドルを使用することによってアクセスされます。複数の 結果セットが返される場合、SQLMoreResults() または SQLNextResult()を 使用して結果セットを記述およびフェッチすることができます。

SQLMoreResults() は、最初の結果セット用にカーソルをクローズし、 次の結果セットを処理するために使用されます。SQLNextResult() は、 StatementHandle1 にあるカーソルをクローズせずに、次の結果セットを StatementHandle2 に移動します。どちらの関数も、フェッチする結果セットが ない場合は、SQL_NO_DATA_FOUND を返します。

SQLNextResult() を使用すると、他のステートメント・ハンドルに転送された 順序で結果セットを処理することができます。StatementHandle1 にカーソル (オープン 結果セット) がなくなるまで、SQLMoreResults() および SQLNextResult() に 対する混合呼び出しが可能です。

SQLNextResult() が SQL_SUCCESS を返すとき、次の結果セットは StatementHandle1 との関連はなくなります。代わりに次の結果セットは、 SQLExecDirect() の呼び出しが StatementHandle2 での照会を 正常に実行したように、StatementHandle2 と関連付けられます。このため カーソルは、SQLNumResultSets()SQLDescribeCol()、 または SQLColAttribute() を使用して記述することができます。

SQLNextResult() が呼び出された後、StatementHandle2 に 関連付けられた結果セットは残りの結果セットのチェーンから除去され、 SQLNextResult() または SQLMoreResults() で使用できません。 このことは、'n' 個の結果セットについて SQLNextResult() を最大 'n-1' 回 正常に呼び出すことができることを示しています。

SQLFreeStmt() が SQL_CLOSE オプション指定で呼び出されるか、 または SQLFreeHandle()HandleType を SQL_HANDLE_STMT に 設定して呼び出されると、このステートメント・ハンドルで保留された結果セットは すべて廃棄されます。

SQLNextResult() は、StatementHandle2 がオープン・カーソルを 持っているか、または StatementHandle1StatementHandle2 が 同じ接続にない場合は、SQL_ERROR を返します。エラーまたは警告が返されない場合、 SQLError() は常に StatementHandle1 で呼び出されているはずです。

注:
SQLMoreResults() はまた、 SQLParamOptions() および SQLBindParameter() で指定された 入力パラメーター値の配列を使用してパラメーター化照会を操作します。 ただし SQLNextResult() はこれをサポートしません。

36.7.2.5 戻りコード

36.7.2.6 診断


表 26. SQLNextResult SQLSTATEs
SQLSTATE 記述 説明
40003 08S01 通信リンク障害。 アプリケーションとデータ・ソース間の通信リンクに、関数の完了前に障害が起きました。
58004 予期しないシステム障害。 回復不能システム・エラー。
HY001 メモリー割り振り失敗。 DB2 CLI が、関数の実行または完了をサポートするために必要なメモリーを 割り振れません。
HY010 関数シーケンス・エラー。

data-at-execute (SQLParamData(), SQLPutData()) 操作中に 関数が呼び出されました。

StatementHandle2 は、関連付けられたオープン・カーソルを 持っています。

BEGIN COMPOUND および END COMPOUND SQL 操作中に関数が呼び出されました。

HY013 予期しないメモリー・ハンドリング・エラー。 DB2 CLI が、関数の実行または完了をサポートするために必要なメモリーを アクセスできませんでした。
HYT00 タイムアウト満了。 データ・ソースが結果セットを返す前にタイムアウト期間が満了しました。タイムアウトは、 Windows 3.1 や Macintosh System 7 などの非マルチタスク・システムでのみサポートされます。 タイムアウト期間は SQLSetConnectAttr() の SQL_ATTR_QUERY_TIMEOUT 属性を使用して 設定することができます。

36.7.2.7 制約事項

SQLMoreResults() だけがパラメーター化照会に使用できます。

36.7.2.8 参照


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]