ODBC environments have the following three states.
| State | Description |
| E0 | Unallocated environment |
| E1 | Allocated environment, unallocated connection |
| E2 | Allocated environment, allocated connection |
The following tables show how each ODBC function affects the environment state.
| E0 Unallocated |
E1 Allocated |
E2 Connection |
| E1 [1] | -- [4] | -- [4] |
| (IH) [2] | E2 [5] (HY010) [6] |
-- [4] |
| (IH) [3] | (IH) | -- [4] |
[1]This row shows transitions when HandleType was SQL_HANDLE_ENV.
[2]This row shows transitions when HandleType was SQL_HANDLE_DBC.
[3]This row shows transitions when HandleType was SQL_HANDLE_STMT or SQL_HANDLE_DESC.
[4]Calling SQLAllocHandle with OutputHandlePtr pointing to a valid handle overwrites that handle. This may be an application programming error.
[5]The SQL_ATTR_ODBC_VERSION environment attribute had been set on the environment.
[6]The SQL_ATTR_ODBC_VERSION environment attribute had not been set on the environment.
| E0 Unallocated |
E1 Allocated |
E2 Connection |
| (IH) | -- [1] (HY010) [2] |
-- [1] (HY010) [2] |
[1]The SQL_ATTR_ODBC_VERSION environment attribute had been set on the environment.
[2]The SQL_ATTR_ODBC_VERSION environment attribute had not been set on the environment.
| E0 Unallocated |
E1 Allocated |
E2 Connection |
| (IH) [1] | -- [3] (HY010) [4] |
-- [3] (HY010) [4] |
| (IH) [2] | (IH) | -- |
[1]This row shows transitions when HandleType was SQL_HANDLE_ENV.
[2]This row shows transitions when HandleType was SQL_HANDLE_DBC.
[3]The SQL_ATTR_ODBC_VERSION environment attribute had been set on the environment.
[4]The SQL_ATTR_ODBC_VERSION environment attribute had not been set on the environment.
| E0 Unallocated |
E1 Allocated |
E2 Connection |
| (IH) [1] | E0 | (HY010) |
| (IH) [2] | (IH) | -- [4] E1 [5] |
| (IH) [3] | (IH) | -- |
[1]This row shows transitions when HandleType was SQL_HANDLE_ENV.
[2]This row shows transitions when HandleType was SQL_HANDLE_DBC.
[3]This row shows transitions when HandleType was SQL_HANDLE_STMT or SQL_HANDLE_DESC.
[4]There were other allocated connection handles.
[5]The connection handle specified in Handle was the only allocated connection handle.
| E0 Unallocated |
E1 Allocated |
E2 Connection |
| (IH) [1] | -- | -- |
| (IH) [2] | (IH) | -- |
[1]This row shows transitions when HandleType was SQL_HANDLE_ENV.
[2]This row shows transitions when HandleType was SQL_HANDLE_DBC, SQL_HANDLE_STMT, or SQL_HANDLE_DESC.
| E0 Unallocated |
E1 Allocated |
E2 Connection |
| (IH) | -- [1] (HY010) [2] |
-- |
[1]The SQL_ATTR_ODBC_VERSION environment attribute had been set on the environment.
[2]The SQL_ATTR_ODBC_VERSION environment attribute had not been set on the environment.
| E0 Unallocated |
E1 Allocated |
E2 Connection |
| (IH) | -- [1] (HY010) [2] |
(HY011) |
[1]The SQL_ATTR_ODBC_VERSION environment attribute had been set on the environment.
[2]The Attribute argument was not SQL_ATTR_ODBC_VERSION and the SQL_ATTR_ODBC_VERSION environment attribute had not been set on the environment.
| E0 Unallocated |
E1 Allocated |
E2 Connection |
| (IH) | (IH) | -- |