SQLNumResultCols() - 結果列の数を取得する

SQLNumResultCols() は、入力ステートメント・ハンドルに関連した結果セットの列数を戻します。 SQLPrepare() または SQLExecDirect() は、 SQLNumResultCols() を呼び出す前に、呼び出す必要があります。 SQLNumResultCols() の呼び出し後、SQLColAttribute() またはバインド列関数の 1 つを呼び出せます。

SQLNumResultCols() の ODBC 仕様

表 1. SQLNumResultCols() 仕様
ODBC 仕様レベル X/Open CLI CAE 仕様 ISO CLI 仕様
1.0 はい はい

構文

SQLRETURN   SQLNumResultCols (SQLHSTMT          hstmt,
                              SQLSMALLINT FAR   *pccol);

関数引数

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

表 2. SQLNumResultCols() 引数
データ・タイプ 引数 使用 説明
SQLHSTMT hstmt input ステートメント・ハンドルを指定します。
SQLSMALLINT * pccol 出力 結果セットの列の数を戻すバッファーを指します。

使用法

この関数を呼び出して、ステートメント・ハンドルに関連した SQL 結果セットに 必要な SQLBindCol() または SQLGetData() 呼び出し数を判別することができます。

この関数は、 入力ステートメント・ハンドルに関して実行された最後のステートメントまたは関数が結果セットを生成しなかった場合に、 出力引数をゼロに設定します。

戻りコード

SQLNumResultCols() は、呼び出された後、次のいずれかの値を戻します。
  • SQL_SUCCESS
  • SQL_ERROR
  • SQL_INVALID_HANDLE

診断

次の表は、この関数が生成する各 SQLSTATE 値ごとに、 その記述と説明を一覧で記載してあります。

表 3. SQLNumResultCols() SQLSTATE
SQLSTATE 説明 説明
08S01 通信リンク障害が発生しました。 関数が完了する前に、アプリケーションとデータ・ソース間の 通信リンクで障害が発生しました。
580 04 予想外のシステム障害が発生しました。 リカバリー不能なシステム・エラーです。
HY001 メモリーの割り振りが失敗しました。 DB2 ODBC は、関数の実行または完了をサポートするのに必要なメモリーを割り振ることができません。
HY009 NULL ポインターの使用が無効です。 pccol が NULL ポインターです。
HY010 関数のシーケンス・エラーです。 次の 1 つ以上の理由に該当した場合に、この SQLSTATE が戻されます。
  • この関数は、hstmtに対して SQLPrepare() または SQLExecDirect() を呼び出す前に呼び出されます。
  • この関数は、実行時データの操作時に呼び出されました。 (すなわち、SQLParamData() または SQLPutData() 関数を使用するプロシージャー実行中に関数が呼び出されました。)
HY013 予期しない、メモリーのハンドル・エラーです。 DB2 ODBC は、関数の実行または完了をサポートするのに必要なメモリーにアクセスすることができません。

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