一致性
推出版本:ODBC 3.0 标准合规:ISO 92
总结
SQLGetEnvAttr 返回当前环境属性的设置。
Syntax
SQLRETURN SQLGetEnvAttr(
SQLHENV EnvironmentHandle,
SQLINTEGER Attribute,
SQLPOINTER ValuePtr,
SQLINTEGER BufferLength,
SQLINTEGER * StringLengthPtr);
Arguments
环境控制
[输入]环境控制。
属性
[输入]属性要检索。
ValuePtr
[输出]指向一个缓冲区,返回由 属性指定的属性当前值。
如果 ValuePtr 是 NULL,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,Handle 为 EnvironmentHandle 。 下表列出 了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 函数 |