规范: | DB2 CLI 5.0 | ODBC 3.0 | ISO CLI |
SQLGetStmtAttr() 返回语句属性的当前设置。
语法
SQLRETURN SQLGetStmtAttr ( SQLHSTMT StatementHandle, SQLINTEGER Attribute, SQLPOINTER ValuePtr, SQLINTEGER BufferLength, SQLINTEGER *StringLengthPtr);
函数自变量
数据类型 | 自变量 | 使用 | 描述 |
---|---|---|---|
SQLHSTMT | StatementHandle | 输入 | 语句句柄。 |
SQLINTEGER | Attribute | 输入 | 要检索的属性。 |
SQLPOINTER | ValuePtr | 输出 | 指向缓冲区的指针,将在该缓冲区中返回在 Attribute 中指定的属性值。 |
SQLINTEGER | BufferLength | 输入 | 如果 Attribute 是一个 ODBC
定义的属性,且 ValuePtr 指向字符串或二进制缓冲区,则此自变量应是
*ValuePtr 的长度。
如果 Attribute 是 ODBC 定义的属性且 *ValuePtr 是一个整数,则忽略 BufferLength。如果 Attribute 是 DB2 CLI 属性,则应用程序通过设置 BufferLength 自变量指示该属性的特性。BufferLength 可以具有以下值:
|
SQLSMALLINT | *StringLengthPtr | 输出 | 指向一个缓冲区的指针,在该缓冲区中返回可在 ValuePtr 中返回的字节总数(排除 null 终止符)。 如果这是空指针,不返回长度。 如果属性值是字符串,可返回的字节数大于或等于 BufferLength,*ValuePtr 中的数据截断为 BufferLength 减去 null 终止字符的长度且由 DB2 CLI 以 null 结束。 |
用法
对 SQLGetStmtAttr() 的调用在 *ValuePtr 中返回在 Attribute 中指定的语句属性的值。在 DB2 Everyplace 中, 该值是 32 位值,未使用 BufferLength 和 StringLengthPtr 自变量。
可以通过 SQLGetStmtAttr() 检索下列语句属性。有关属性的描述,请参阅SQLSetStmtAttr - 设置与语句相关的选项。
返回码
诊断
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 属性,但不受数据源支持。 |
限制
无。
相关参考