SQLRowCount() - 行カウントを取得する
SQLRowCount() は、
UPDATE、INSERT、DELETE、または MERGE ステートメントによって影響を受けた表の行数を返します。 表、または表に基づくビューに対して、
SQLRowCount() を呼び出すことができます。 SQLExecute() または SQLExecDirect() は、SQLRowCount() を呼び出す前に、呼び出す必要があります。
SQLRowCount() の ODBC 仕様
| ODBC 仕様レベル | X/Open CLI CAE 仕様 | ISO CLI 仕様 |
|---|---|---|
| 1.0 | はい | はい |
構文
31 ビット・アプリケーションの場合、次の構文を使用します。
SQLRETURN SQLRowCount (SQLHSTMT hstmt,
SQLINTEGER FAR *pcrow);64 ビット・アプリケーションの場合、次の構文を使用します。
SQLRETURN SQLRowCount (SQLHSTMT hstmt,
SQLLEN FAR *pcrow); 関数引数
次の表は、この関数のそれぞれの引数ごとに、 データ・タイプ、用途、および説明を示しています。
| データ・タイプ | 引数 | 使用 | 説明 |
|---|---|---|---|
| SQLHSTMT | hstmt | input | ステートメント・ハンドル |
| SQLINTEGER *(31ビット) または SQLLEN * (64ビット )1 | pcrow | 出力 | 影響を受けた行数を保管する場所を指すポインター。 |
注:
|
|||
使用法
入力ステートメント・ハンドルが参照するステートメントのうち最後に 実行されたものが UPDATE、INSERT、DELETE、または MERGE ステートメントで なかった場合、あるいはそのステートメントが正常に実行されなかった場合、 関数は pcrow の内容を -1 に設定します。
SQLRowCount() が、INSERT、UPDATE、DELETE、または MERGE 以外の SQL 文の SQLExecDirect() または SQLExecute() の後に実行された場合、戻りコードは 0 となり、 pcrow は -1 に設定されます。
そのステートメントによって影響を受けた可能性がある 他表のどの行数 (例えば、カスケード削除) も、この数には含まれていません。
SQLRowCount() が組み込み関数 (例えば、SQLTables()) の後で実行される場合、
戻りコードが -1 で SQLSTATE HY010 になります。
戻りコード
SQLRowCount() は、呼び出された後、次のいずれかの値を戻します。- SQL_SUCCESS
- SQL_ERROR
- SQL_INVALID_HANDLE
診断
次の表は、この関数が生成する各 SQLSTATE 値ごとに、 その記述と説明を一覧で記載してあります。
| SQLSTATE | 説明 | 説明 |
|---|---|---|
| 08S01 | 通信リンク障害が発生しました。 | 関数が完了する前に、アプリケーションとデータ・ソース間の 通信リンクで障害が発生しました。 |
| 580 04 | 予想外のシステム障害が発生しました。 | リカバリー不能なシステム・エラーです。 |
| HY001 | メモリーの割り振りが失敗しました。 | DB2 ODBC は、関数の実行または完了をサポートするのに必要なメモリーを割り振ることができません。 |
| HY010 | 関数のシーケンス・エラーです。 | この関数は、hstmtに対して SQLExecute() または SQLExecDirect() を呼び出す前に呼び出されます。 |
| HY013 | 予期しない、メモリーのハンドル・エラーです。 | DB2 ODBC は、関数の実行または完了をサポートするのに必要なメモリーにアクセスすることができません。 |
例
関連例については、関数 SQLDescribeCol() を参照してください。