SQLGetEnvAttr 函数

一致性
推出版本:ODBC 3.0 标准合规:ISO 92

总结
SQLGetEnvAttr 返回当前环境属性的设置。

Syntax

  
SQLRETURN SQLGetEnvAttr(  
     SQLHENV        EnvironmentHandle,  
     SQLINTEGER     Attribute,  
     SQLPOINTER     ValuePtr,  
     SQLINTEGER     BufferLength,  
     SQLINTEGER *   StringLengthPtr);  

Arguments

环境控制
[输入]环境控制。

属性
[输入]属性要检索。

ValuePtr
[输出]指向一个缓冲区,返回由 属性指定的属性当前值。

如果 ValuePtrNULL,StringLengthPtr 仍然会返回 ValuePtr 指向的缓冲区中可返回的总字节数(不含字符数据的空终止字符)。

BufferLength
[输入]如果 ValuePtr 指向一个字符串,该参数应为 *ValuePtr 的长度。 如果 *ValuePtr 是整数,则忽略 BufferLength 。 如果 *ValuePtr 是Unicode字符串(调用 SQLGetEnvAttrW时), BufferLength 参数必须是偶数。 如果属性值不是字符串,则 BufferLength 未被使用。

StringLengthPtr
[输出]指向缓冲区的指针,用于返回* ValuePtr中可返回的总字节数(不含空终止字符)。 如果属性值是一个字符字符串,且可返回的字节数大于或等于 BufferLength,则 *ValuePtr 中的数据被截断为 BufferLength 减去空终止字符长度,并由驱动程序进行空终止。

Returns

SQL_SUCCESS、SQL_SUCCESS_WITH_INFO、SQL_NO_DATA、SQL_ERROR或SQL_INVALID_HANDLE。

诊断

SQLGetEnvAttr 返回 SQL_ERROR 或 SQL_SUCCESS_WITH_INFO 时,可以通过调用 SQLGetDiagRec 获得关联的 SQLSTATE 值,HandleType 为 SQL_HANDLE_ENV,HandleEnvironmentHandle 下表列出 了SQLGetEnvAttr 通常返回的SQLSTATE值,并在此函数的上下文中解释了每个值;“(DM)” 符号位于驱动程序管理器返回的 SQLSTATE 描述之前。 除非另有说明,否则与每个 SQLSTATE 值关联的返回代码SQL_ERROR。

SQLSTATE Error Description
01000 常规警告 特定于驱动程序的信息性消息。 (函数返回SQL_SUCCESS_WITH_INFO。)
01004 字符串数据,右截断 *ValuePtr 中返回的数据被截断为 缓冲长度 减去空终止字符。 未截断字符串值的长度返回为 *StringLengthPtr。 (函数返回SQL_SUCCESS_WITH_INFO。)
HY000 常规错误 发生错误:没有特定的 SQLSTATE,也没有定义特定于实现的 SQLSTATE。 *MessageText 缓冲区中 SQLGetDiagRec 返回的错误消息描述错误及其原因。
HY001 内存分配错误 驱动程序无法分配支持执行或完成函数所需的内存。
HY010 函数序列错误 (DM) SQL_ATTR_ODBC_VERSION 尚未通过 SQLSetEnvAttr 设置。 如果你用的是 SQLAllocHandleStd,就不需要显式设置SQL_ATTR_ODBC_VERSION
HY013 内存管理错误 无法处理函数调用,因为基础内存对象无法访问,可能是因为内存条件低。
HY092 无效属性/选项标识符 参数属性指定的 值在驱动程序 支持的ODBC版本中不适用。
HY117 连接因未知事务状态而挂起。 仅允许断开连接和只读函数。 (DM) 有关挂起状态的详细信息,请参阅 SQLEndTran 函数
HYC00 未实现可选功能 参数属性指定的 值是驱动 支持但驱动不支持的 ODBC 版本的有效 ODBC 环境属性。
IM001 驱动程序不支持此函数 (DM) 对应环境 句柄 的驱动程序不支持该函数。

Comments

有关属性列表,请参见 SQLSetEnvAttr。 没有驱动程序特定的环境属性。 如果 Attribute 指定返回字符串的属性, ValuePtr 必须是返回该字符串的缓冲区的指针。 字符串的最大长度,包括空终止字节,将是 BufferLength 字节。

SQLGetEnvAttr 可以在环境句柄分配和释放之间的任意时间调用。 应用程序成功为该环境设置的所有环境属性都会持续存在,直到在 EnvironmentHandle 上调用 SQLFreeHandle 并使用 HandleType 为 SQL_HANDLE_ENV。 在 ODBC 3*.x* 中可以同时分配多个环境句柄。 当另一个环境被分配时,一个环境属性不受影响。

注释

SQL_ATTR_OUTPUT_NTS环境属性被符合标准的应用程序支持。 当调用 SQLGetEnvAttr 时,ODBC 3*.x* 驱动管理器总是返回该属性的 SQL_TRUE。 SQL_ATTR_OUTPUT_NTS只能通过调用 SQLSetEnvAttr 来设置为SQL_TRUE。

有关以下内容的信息 请参阅
返回连接属性的设置 SQLGetConnectAttr 函数
返回语句属性的设置 SQLGetStmtAttr 函数
设置连接属性 SQLSetConnectAttr 函数
设置环境属性 SQLSetEnvAttr 函数
设置语句属性 SQLSetStmtAttr 函数