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时,可以通过调用 SQLGetDiagRec 来获取关联的 SQLSTATE 值,该 SQLGetDiagRecHandleType 为 SQL_HANDLE_STMT,句 StatementHandle。 下表列出了 SQLNumParams 通常返回的 SQLSTATE 值,并说明了此函数上下文中的每个值;表示法“ (DM) ”位于驱动程序管理器返回的 SQLSTATEs 说明之前。 与每个 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 函数,在完成执行之前,从多线程应用程序中的不同线程在 StatementHandle 上调用了 SQLCancel 或 SQLCancelHandle
HY010 函数序列错误 (DM) 在调用 StatementHandle的 SQLPrepareSQLExecDirect 之前调用了函数。

(DM) 为 与 StatementHandle 关联的连接句柄调用了异步执行的函数。 调用 SQLNumParams 函数时,此异步函数仍在执行。

(DM) 为 StatementHandle 调用了异步执行的函数 (不是此函数) ,并且调用此函数时仍在执行。

(DM) SQLExecuteSQLExecDirectSQLBulkOperationsSQLSetPos 已为 StatementHandle 调用并返回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 函数

另请参阅

ODBC API 参考
ODBC 头文件