仕様: | DB2 CLI 2.1 | ODBC 1.0 |
SQLMoreResults() は、以下のものに関連付けられているステートメント・ハンドルでさらに利用可能な情報があるかどうかを判別します。
構文
SQLRETURN SQLMoreResults (SQLHSTMT StatementHandle); /* hstmt */
関数引き数
データ・タイプ | 引き数 | 使用法 | 説明 |
---|---|---|---|
SQLHSTMT | StatementHandle | 入力 | ステートメント・ハンドル。 |
使用法
この関数は、以下の実行時に複数の結果セットを順次に戻すために使用されます。
詳細については、配列の使用によるパラメーター値の入力とストアード・プロシージャーから結果セットを返すを参照してください。
最初の結果セットの処理が完了した後、アプリケーションは SQLMoreResults() を呼び出して、別の結果セットが利用可能であるかどうかを判別します。現在の結果セットがまだ取り出されていない行であれば、 SQLMoreResults() はカーソルをクローズしてそれらを廃棄し、別の結果セットが利用可能であれば、SQL_SUCCESS を戻します。
すべての結果セットが処理されると、SQLMoreResults() は SQL_NO_DATA_FOUND を戻します。
SQL_CLOSE オプションを指定して SQLFreeStmt() が呼び出された場合、または HandleType を SQL_HANDLE_STMT に設定して SQLFreeHandle() が呼び出された場合、このステートメント・ハンドル上のすべての保留結果セットは廃棄されます。
戻りコード
診断
表 125. SQLMoreResults SQLSTATE
SQLSTATE | 説明 | 解説 |
---|---|---|
40003 08S01 | 通信リンクに障害が起きました。 | アプリケーションとデータ・ソースとの間の通信リンクが、関数の完了する前に失敗しました。 |
58004 | 予期しないシステム障害です。 | 回復不能システム・エラー。 |
HY001 | メモリーの割り振り失敗です。 | DB2 CLI は、関数の実行または完了をサポートするのに必要なメモリーを割り振ることができません。 |
HY010 | 関数の順序エラーです。 | 実行時データ (SQLParamData()、SQLPutData()) 操作中に、関数が呼び出されました。
BEGIN COMPOUND と END COMPOUND の SQL 操作中に、関数が呼び出されました。 |
HY013 | 予期しないメモリーのハンドル・エラーが起きました。 | DB2 CLI は、関数の実行または完了をサポートするのに必要なメモリーを使用することができませんでした。 |
HYT00 | タイムアウトになりました。 | データ・ソースが結果セットを返す前に、タイムアウト期間が満了しました。タイムアウトは、 Windows 3.1 や Macintosh System 7 のようなマルチタスクではないシステム上でのみサポートされています。タイムアウト期間は、 SQLSetConnectAttr() の SQL_ATTR_QUERY_TIMEOUT 属性を使用して設定することができます。 |
また、 SQLMoreResults() は SQLExecute() に関連した SQLSTATE を戻すことができます。
制約
ODBC 仕様の SQLMoreResults() も、入力パラメーター値の配列が指定されたパラメーター化 INSERT、UPDATE、および DELETE ステートメントの実行に関連付けられたカウントを戻すことができます。しかし、DB2 CLI はこのようにカウント情報を戻すことをサポートしていません。
(ここで完全サンプル pcall.c を使用することもできます 。)
/* From the CLI sample PCALL.C */ /* ... */ /* print result sets, if any */ do { rc = StmtResultPrint( hstmt1); } while( SQLMoreResults( hstmt1) == SQL_SUCCESS);
参照