SQLRowCount() - 行カウントを取得する

SQLRowCount() は、 UPDATE、INSERT、DELETE、または MERGE ステートメントによって影響を受けた表の行数を返します。 表、または表に基づくビューに対して、 SQLRowCount() を呼び出すことができます。 SQLExecute() または SQLExecDirect() は、SQLRowCount() を呼び出す前に、呼び出す必要があります。

SQLRowCount() の ODBC 仕様

表 1. SQLRowCount() 仕様
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);

関数引数

次の表は、この関数のそれぞれの引数ごとに、 データ・タイプ、用途、および説明を示しています。

表 2. SQLRowCount() 引数
データ・タイプ 引数 使用 説明
SQLHSTMT hstmt input ステートメント・ハンドル
SQLINTEGER *(31ビット) または SQLLEN * (64ビット )1 pcrow 出力 影響を受けた行数を保管する場所を指すポインター。
注:
  1. 64 ビット・アプリケーションの場合、以前のバージョンの Db2 で使用されていたデータ・タイプ SQLINTEGER は、引き続き有効です。 ただし、アプリケーションのポータビリティーを最大限に引き出すために、SQLLEN の使用をお勧めします。

使用法

入力ステートメント・ハンドルが参照するステートメントのうち最後に 実行されたものが 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 値ごとに、 その記述と説明を一覧で記載してあります。

表 3. SQLRowCount() SQLSTATE
SQLSTATE 説明 説明
08S01 通信リンク障害が発生しました。 関数が完了する前に、アプリケーションとデータ・ソース間の 通信リンクで障害が発生しました。
580 04 予想外のシステム障害が発生しました。 リカバリー不能なシステム・エラーです。
HY001 メモリーの割り振りが失敗しました。 DB2 ODBC は、関数の実行または完了をサポートするのに必要なメモリーを割り振ることができません。
HY010 関数のシーケンス・エラーです。 この関数は、hstmtに対して SQLExecute() または SQLExecDirect() を呼び出す前に呼び出されます。
HY013 予期しない、メモリーのハンドル・エラーです。 DB2 ODBC は、関数の実行または完了をサポートするのに必要なメモリーにアクセスすることができません。

関連例については、関数 SQLDescribeCol() を参照してください。