次の方法で共有


SQLNumResultCols 関数

準拠
導入されたバージョン: ODBC 1.0 標準コンプライアンス: ISO 92

まとめ
SQLNumResultCols は、結果セット内の列数を返します。

構文

  
SQLRETURN SQLNumResultCols(  
     SQLHSTMT        StatementHandle,  
     SQLSMALLINT *   ColumnCountPtr);  

引数

StatementHandle
[入力]ステートメント ハンドル。

ColumnCountPtr
[出力]結果セット内の列数を返すバッファーへのポインター。 このカウントには、バインドされたブックマーク列は含まれません。

返品

SQL_SUCCESS、SQL_SUCCESS_WITH_INFO、SQL_STILL_EXECUTING、SQL_ERROR、またはSQL_INVALID_HANDLE。

診断

SQLNumResultColsがSQL_ERRORまたはSQL_SUCCESS_WITH_INFOを返す場合、関連付けられている SQLSTATE 値は、HandleType SQL_HANDLE_STMT の SQLGetDiagRec を呼び出し、Handle StatementHandle を呼び出すことによって取得できます。 次の表に、 SQLNumResultCols によって一般的に返される SQLSTATE 値の一覧を示し、この関数のコンテキストでそれぞれについて説明します。表記 "(DM)" は、ドライバー マネージャーによって返される SQLSTATEs の説明の前にあります。 特に明記されていない限り、各 SQLSTATE 値に関連付けられている戻りコードはSQL_ERROR。

SQLSTATE エラー 説明
01000 一般的な警告 ドライバー固有の情報メッセージ。 (関数はSQL_SUCCESS_WITH_INFOを返します。
08S01 通信リンクエラー ドライバーとドライバーが接続されたデータ ソース間の通信リンクは、関数の処理が完了する前に失敗しました。
HY000 一般的なエラー 特定の SQLSTATE がなく、実装固有の SQLSTATE が定義されていないエラーが発生しました。 *MessageText バッファー内の SQLGetDiagRec によって返されるエラー メッセージには、エラーとその原因が記述されています。
HY001 メモリ割り当てエラー ドライバーは、関数の実行または完了をサポートするために必要なメモリを割り当てませんでした。
HY008 操作が取り消されました StatementHandle に対して非同期処理が有効になりました。 関数が呼び出され、実行が完了する前に、 SQLCancel または SQLCancelHandleStatementHandle で呼び出されました。その後、関数は StatementHandle で再度呼び出されました。

関数が呼び出され、実行が完了する前に、 SQLCancel または SQLCancelHandle がマルチスレッド アプリケーション内の別のスレッドから StatementHandle で呼び出されました。
HY010 関数シーケンス エラー (DM) StatementHandle に関連付けられている接続ハンドルに対して非同期実行関数が呼び出されました。 この非同期関数は、 SQLNumResultsCols 関数が呼び出されたときにまだ実行されていました。

(DM) SQLExecuteSQLExecDirect、または SQLMoreResults StatementHandle が呼び出され、SQL_PARAM_DATA_AVAILABLEが返されました。 この関数は、すべてのストリーミング パラメーターのデータが取得される前に呼び出されました。

(DM) 関数は、StatementHandle SQLPrepare または SQLExecDirect を呼び出す前に呼び出されました。

(DM) 非同期実行関数 (この関数ではない) が StatementHandle に対して呼び出されこの関数が呼び出されたときにはまだ実行されていました。

(DM) SQLExecuteSQLExecDirectSQLBulkOperations、または SQLSetPosStatementHandle に対して呼び出され、SQL_NEED_DATAが返されました。 この関数は、すべての実行時データ パラメーターまたは列に対してデータが送信される前に呼び出されました。

ステートメント ハンドル 解放できるタイミングの詳細については SQLPrepare 関数を参照してください。
HY013 メモリ管理エラー メモリが不足している可能性があるため、基になるメモリ オブジェクトにアクセスできなかったため、関数呼び出しを処理できませんでした。
HY117 不明なトランザクション状態のため、接続が中断されます。 切断関数と読み取り専用関数のみが許可されます。 (DM) 中断状態の詳細については、「 SQLEndTran 関数を参照してください。
HYT01 接続のタイムアウト データ ソースが要求に応答する前に、接続タイムアウト期間の有効期限が切れています。 接続タイムアウト期間は、SQL_ATTR_CONNECTION_TIMEOUT SQLSetConnectAttr によって設定されます。
IM001 ドライバーは、この関数をサポートしていません (DM) StatementHandle に関連付けられているドライバーは、関数をサポートしていません。
IM017 非同期通知モードでポーリングが無効になっている 通知モデルが使用されるたびに、ポーリングは無効になります。
IM018 SQLCompleteAsync は、このハンドルに対する前の非同期操作を完了するために呼び出されていません。 ハンドルに対する前の関数呼び出しがSQL_STILL_EXECUTINGを返し、通知モードが有効になっている場合は、後処理を実行して操作を完了するために、 SQLCompleteAsync をハンドルで呼び出す必要があります。

SQLNumResultCols は、SQLPrepareまたはSQLExecuteSQLPrepareの後、およびSQLExecuteの前に呼び出されたときに返される SQLSTATE を返すことができます。これは、データ ソースがステートメントに関連付けられている SQL ステートメントを評価するタイミングに応じて異なります。

Comments

SQLNumResultCols は、ステートメントが準備済み、実行済み、または位置指定状態の場合にのみ正常に呼び出すことができます。

StatementHandle に関連付けられているステートメントが列を返さない場合、SQLNumResultCols は *ColumnCountPtr を 0 に設定します。

SQLNumResultCols によって返される列の数は、IRD のSQL_DESC_COUNT フィールドと同じ値です。

詳細については、「 作成された結果セットの概要」 と「 メタデータの使用方法」を参照してください。

情報 参照トピック
結果セット内の列へのバッファーのバインド SQLBindCol 関数
ステートメント処理の取り消し SQLCancel 関数
結果セット内の列に関する情報を返す SQLColAttribute 関数
結果セット内の列に関する情報を返す SQLDescribeCol 関数
SQL ステートメントの実行 SQLExecDirect 関数
準備された SQL ステートメントの実行 SQLExecute 関数
データブロックのフェッチまたは結果セットのスクロール SQLFetchScroll 関数
1 つの行またはデータ ブロックを順方向にフェッチする SQLFetch 関数
データの列の一部またはすべてをフェッチする SQLGetData 関数
実行のための SQL ステートメントの準備 SQLPrepare 関数
カーソルのスクロール オプションの設定 SQLSetStmtAttr 関数

参照

ODBC API リファレンス
ODBC ヘッダー ファイル