SQLNumParams 函数
一致性
引入的版本:ODBC 1.0 标准符合性:ISO 92
总结
SQLNumParams 返回 SQL 语句中的参数数。
语法
SQLRETURN SQLNumParams(
SQLHSTMT StatementHandle,
SQLSMALLINT * ParameterCountPtr);
参数
StatementHandle
[输入]语句句柄。
ParameterCountPtr
[输出]指向一个缓冲区的指针,在该缓冲区中返回语句中的参数数。
返回
SQL_SUCCESS、SQL_SUCCESS_WITH_INFO、SQL_STILL_EXECUTING、SQL_ERROR或SQL_INVALID_HANDLE。
诊断
当 SQLNumParams 返回SQL_ERROR或SQL_SUCCESS_WITH_INFO时,可以通过使用 handleType of SQL_HANDLE_STMT 和 StatementHandle 句柄调用 SQLGetDiagRec 来获取关联的 SQLSTATE 值。 下表列出了 SQLNumParams 通常返回的 SQLSTATE 值,并解释此函数上下文中的每个值;表示法“(DM)”位于驱动程序管理器返回的 SQLSTATE 的说明之前。 除非另有说明,否则与每个 SQLSTATE 值关联的返回代码SQL_ERROR。
SQLSTATE | 错误 | 说明 |
---|---|---|
01000 | 常规警告 | 特定于驱动程序的信息性消息。 (函数返回SQL_SUCCESS_WITH_INFO。) |
08S01 | 通信链接失败 | 驱动程序与驱动程序连接到的数据源之间的通信链接在函数完成处理之前失败。 |
HY000 | 常规错误 | 发生错误:没有特定的 SQLSTATE,也没有定义特定于实现的 SQLSTATE。 *MessageText 缓冲区中 SQLGetDiagRec 返回的错误消息描述错误及其原因。 |
HY001 | 内存分配错误 | 驱动程序无法分配支持执行或完成函数所需的内存。 |
HY008 | 操作已取消 | 为 StatementHandle 启用了异步处理。 调用了 SQLNumParams 函数,在完成执行之前,对 StatementHandle 调用 SQLCancel 或 SQLCancelHandle;然后对 StatementHandle 再次调用 SQLNumParams 函数。 或者,调用了 SQLNumParams 函数,在完成执行之前,SQLCancel 或 SQLCancelHandle 在多线程应用程序中从其他线程调用 StatementHandle。 |
HY010 | 函数序列错误 | (DM) 在为 StatementHandle 调用 SQLPrepare 或 SQLExecDirect 之前调用了该函数。 (DM) 为与 StatementHandle 关联的连接句柄调用异步执行函数。 调用 SQLNumParams 函数时,此异步函数仍在执行。 (DM) 为 StatementHandle 调用异步执行函数(而不是此函数),并在调用此函数时仍在执行。 (DM) 为 StatementHandle 调用了 SQLExecute、SQLExecDirect、SQLBulkOperations 或 SQLSetPos,并返回了SQL_NEED_DATA。 在为所有数据执行参数或列发送数据之前调用此函数。 |
HY013 | 内存管理错误 | 无法处理函数调用,因为基础内存对象无法访问,可能是因为内存条件低。 |
HY117 | 连接因未知事务状态而挂起。 仅允许断开连接和只读函数。 | (DM) 有关挂起状态的详细信息,请参阅 SQLEndTran 函数。 |
HYT01 | 超过连接超时时间 | 在数据源响应请求之前,连接超时期限已过期。 连接超时期限通过 SQLSetConnectAttr 设置,SQL_ATTR_CONNECTION_TIMEOUT。 |
IM001 | 驱动程序不支持此函数 | (DM) 与 StatementHandle 关联的驱动程序不支持该函数。 |
IM017 | 在异步通知模式下禁用轮询 | 每当使用通知模型时,轮询将被禁用。 |
IM018 | 尚未调用 SQLCompleteAsync 来完成此句柄上的上一个异步操作。 | 如果句柄上的上一个函数调用返回SQL_STILL_EXECUTING并且启用通知模式, 则必须在句柄上调用 SQLCompleteAsync 才能执行后期处理并完成操作。 |
注释
只有在调用 SQLPrepare 后才能调用 SQLNumParams。
如果与 StatementHandle 关联的语句不包含参数, SQLNumParams 会将 *ParameterCountPtr 设置为 0。
SQLNumParams 返回的参数数与 IPD 的SQL_DESC_COUNT字段相同。
有关详细信息,请参阅 描述参数。
相关函数
有关以下内容的信息 | 请参阅 |
---|---|
将缓冲区绑定到参数 | SQLBindParameter 函数 |
返回有关语句中参数的信息 | SQLDescribeParam 函数 |