Environment Transitions

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.

SQLAllocHandle

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.

SQLDataSources and SQLDrivers

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.

SQLEndTran

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.

SQLFreeHandle

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.

SQLGetDiagField and SQLGetDiagRec

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.

SQLGetEnvAttr

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.

SQLSetEnvAttr

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.

All Other ODBC Functions

E0
Unallocated
E1
Allocated
E2
Connection
(IH) (IH) --