SQLGetStmtAttr - 获取语句属性的当前设置

用途

规范: DB2 CLI 5.0 ODBC 3.0 ISO CLI

SQLGetStmtAttr() 返回语句属性的当前设置。

语法

SQLRETURN   SQLGetStmtAttr       (
                SQLHSTMT             StatementHandle,
                              SQLINTEGER        Attribute,
                              SQLPOINTER        ValuePtr,
                SQLINTEGER           BufferLength,
                SQLINTEGER          *StringLengthPtr);

函数自变量

表 70. SQLGetStmtAttr 自变量

数据类型 自变量 使用 描述
SQLHSTMT StatementHandle 输入 语句句柄。
SQLINTEGER Attribute 输入 要检索的属性。
SQLPOINTER ValuePtr 输出 指向缓冲区的指针,将在该缓冲区中返回在 Attribute 中指定的属性值。
SQLINTEGER BufferLength 输入 如果 Attribute 是一个 ODBC 定义的属性,且 ValuePtr 指向字符串或二进制缓冲区,则此自变量应是 *ValuePtr 的长度。

如果 Attribute 是 ODBC 定义的属性且 *ValuePtr 是一个整数,则忽略 BufferLength。如果 Attribute 是 DB2 CLI 属性,则应用程序通过设置 BufferLength 自变量指示该属性的特性。BufferLength 可以具有以下值:

  • 如果 *ValuePtr 是指向字符串的指针,则 BufferLength 是字符串或 SQL_NTS 的长度。
  • 如果 *ValuePtr 是指向二进制缓冲区的指针,则应用程序将 SQL_LEN_BINARY_ATTR(长度)宏的结果放置在 BufferLength 中。
  • 如果 *ValuePtr 是指向除字符串或二进制字符串以外的值的指针,则 BufferLength 的值应为 SQL_IS_POINTER。
  • 如果 *ValuePtr 包含定长数据类型,则 BufferLength 是 SQL_IS_INTEGER 或 SQL_IS_UINTEGER(在适当的时候)。
SQLSMALLINT *StringLengthPtr 输出 指向一个缓冲区的指针,在该缓冲区中返回可在 ValuePtr 中返回的字节总数(排除 null 终止符)。 如果这是空指针,不返回长度。 如果属性值是字符串,可返回的字节数大于或等于 BufferLength,*ValuePtr 中的数据截断为 BufferLength 减去 null 终止字符的长度且由 DB2 CLI 以 null 结束。

用法

SQLGetStmtAttr() 的调用在 *ValuePtr 中返回在 Attribute 中指定的语句属性的值。在 DB2 Everyplace 中, 该值是 32 位值,未使用 BufferLengthStringLengthPtr 自变量。

可以通过 SQLGetStmtAttr() 检索下列语句属性。有关属性的描述,请参阅SQLSetStmtAttr - 设置与语句相关的选项

返回码

诊断

表 71. SQLGetStmtAttr SQLSTATE

SQLSTATE 描述 解释
01000 警告。 参考消息。(函数返回 SQL_SUCCESS_WITH_INFO。)
01004 数据被截断。 在 *ValuePtr 中返回的数据截断为 BufferLength 减去 null 终止字符的长度。 在 *StringLengthPtr 中返回未截断的字符串值的长度。(函数返回 SQL_SUCCESS_WITH_INFO。)
24000 游标状态无效。 自变量 Attribute 是 SQL_ATTR_ROW_NUMBER 且未打开游标,或在结果集启动之前或结果集结束之后定位游标。
HY000 一般错误。 出错,该错误没有特定的 SQLSTATE。*MessageText 缓冲区中由 SQLGetDiagRec() 返回的错误消息描述该错误及其原因。
HY001 内存分配失败。 DB2 CLI 无法分配支持函数的执行或完成所需的内存。
HY010 函数顺序错误。 StatementHandle 调用异步执行函数且当调用此函数时仍在执行该函数。

StatementHandle 调用 SQLExecute()SQLExecDirect() 并返回 SQL_NEED_DATA。在对所有“处理数据”参数或列发送数据时调用此函数。

HY013 发生意外的内存处理错误。 DB2 CLI 无法访问支持函数的执行或完成所需的内存。
HY090 字符串或缓冲区长度无效。 BufferLength 自变量指定的值小于 0。
HY092 选项类型超出范围。 对自变量 Attribute 指定的值对于此版本的 DB2 CLI 无效
HY109 无效的游标位置。 Attribute 自变量是 SQL_ATTR_ROW_NUMBER, 已删除了该行或不能取装该行。
HYC00 驱动程序不起作用。 对自变量 Attribute 指定的值是该版本的 DB2 CLI 的有效 DB2 CLI 属性,但不受数据源支持。

限制

无。

相关参考