SQLNumParams 関数
互換性
導入されたバージョン: ODBC 1.0 標準準拠: ISO 92
まとめ
sqlnumparams SQL ステートメント内のパラメーターの数を返します。
構文
SQLRETURN SQLNumParams(
SQLHSTMT StatementHandle,
SQLSMALLINT * ParameterCountPtr);
引数
StatementHandle
代入ステートメントハンドル。
ParameterCountPtr
Outputステートメント内のパラメーターの数を返すバッファーへのポインター。
戻り値
SQL_SUCCESS、SQL_SUCCESS_WITH_INFO、SQL_STILL_EXECUTING、SQL_ERROR、または SQL_INVALID_HANDLE。
診断
Sqlnumparamsが SQL_ERROR または SQL_SUCCESS_WITH_INFO を返す場合、関連付けられた SQLSTATE 値は、 handletypeが SQL_HANDLE_STMT で、ハンドルがStatementHandleであるSQLGetDiagRecを呼び出すことによって取得できます。 次の表に、 Sqlnumparams によって一般的に返される SQLSTATE 値と、この関数のコンテキストにおけるそれぞれの説明を示します。"(DM)" という表記は、ドライバーマネージャーによって返される SQLSTATEs の説明の前にあります。 特に記載がない限り、各 SQLSTATE 値に関連付けられているリターンコードは SQL_ERROR ます。
SQLSTATE | エラー | 説明 |
---|---|---|
01000 | 一般警告 | ドライバー固有の情報メッセージ。 (関数は SQL_SUCCESS_WITH_INFO を返します)。 |
08S01 | 通信リンクの失敗 | 関数が処理を完了する前に、ドライバーと、ドライバーが接続されていたデータソースとの間の通信リンクが失敗しました。 |
HY000 | 一般的なエラー | 特定の SQLSTATE がなく、実装固有の SQLSTATE が定義されていないエラーが発生しました。 * MessagetextバッファーのSQLGetDiagRecによって返されるエラーメッセージには、エラーとその原因が記述されています。 |
HY001 | メモリ割り当てエラー | ドライバーは、関数の実行または完了をサポートするために必要なメモリを割り当てることができませんでした。 |
HY008 | 操作が取り消されました | StatementHandleに対して非同期処理が有効になりました。 Sqlnumparams関数が呼び出され、実行が完了する前に、 SQLCancelまたはsqlnumparamsがStatementHandleで呼び出されました。その後、 StatementHandleでsqlnumparams関数が再度呼び出されました。 または、 Sqlnumparams関数が呼び出され、実行が完了する前に、マルチスレッドアプリケーションの別のスレッドのStatementHandleでSQLCancelまたはsqlnumparamsが呼び出されました。 |
HY010 | 関数のシーケンスエラー | (DM) 関数は、 StatementHandleのSQLPrepareまたはSQLExecDirectを呼び出す前に呼び出されました。 (DM) 非同期的に実行する関数が、 StatementHandleに関連付けられている接続ハンドルに対して呼び出されました。 この非同期関数は、 Sqlnumparams 関数が呼び出されたときにまだ実行されていました。 (DM) 非同期的に実行されている関数 (この1つではない) が StatementHandle に対して呼び出され、この関数が呼び出されたときにまだ実行されています。 (DM) Sqlexecute、 SQLExecDirect、 Sqlbulkoperations、 SQLSetPos が StatementHandle に対して呼び出され、SQL_NEED_DATA が返されました。 この関数は、実行時データのすべてのパラメーターまたは列に対してデータが送信される前に呼び出されました。 |
HY013 | メモリ管理エラー | 基になるメモリオブジェクトにアクセスできなかったため、関数呼び出しを処理できませんでした。メモリ不足の状態が原因である可能性があります。 |
HY117 | トランザクションの状態が不明なため、接続が中断されました。 切断と読み取り専用の機能のみが許可されます。 | (DM) 中断状態の詳細については、「 SQLEndTran 関数」を参照してください。 |
HYT01 | 接続のタイムアウト | データソースが要求に応答する前に、接続のタイムアウト期間が経過しました。 接続タイムアウト期間は、 SQLSetConnectAttr、SQL_ATTR_CONNECTION_TIMEOUT によって設定されます。 |
IM001 | ドライバーはこの機能をサポートしていません | (DM) StatementHandle に関連付けられているドライバーでは、関数はサポートされていません。 |
IM017 | 非同期通知モードでは、ポーリングは無効になっています | 通知モデルが使用されるたびに、ポーリングは無効になります。 |
IM018 | Sqlcompleteasync は、このハンドルで前の非同期操作を完了するために呼び出されていません。 | ハンドルに対する前の関数呼び出しが SQL_STILL_EXECUTING を返し、通知モードが有効になっている場合は、処理を完了するために、ハンドルに対して Sqlcompleteasync を呼び出す必要があります。 |
コメント
Sqlnumparams は、 SQLPrepare が呼び出された後にのみ呼び出すことができます。
StatementHandleに関連付けられたステートメントにパラメーターが含まれていない場合、 sqlnumparamsは *parametercountptrを0に設定します。
Sqlnumparamsによって返されるパラメーターの数は、IPD の SQL_DESC_COUNT フィールドと同じ値になります。
詳細については、「 パラメーターの説明」を参照してください。
関連する関数
対象 | 解決方法については、 |
---|---|
バッファーをパラメーターにバインドする | SQLBindParameter 関数 |
ステートメント内のパラメーターに関する情報を返す | SQLDescribeParam 関数 |