Writing ODBC 3.x Drivers

The following table shows function support in an ODBC 3.x driver and an ODBC application, and the mapping performed by the Driver Manager when the functions are called against an ODBC 3.x driver.

Function Supported

by an

ODBC 3.x


by an

ODBC 3.x


by the ODBC 3.x

Driver Manager to

an ODBC 3.x driver?
SQLAllocConnect No No[1] Yes
SQLAllocEnv No No[1] Yes
SQLAllocHandle Yes Yes No
SQLAllocStmt No No[1] Yes
SQLBindCol Yes Yes No
SQLBindParam No Yes[2] Yes
SQLBindParameter Yes Yes No
SQLBrowseConnect Yes Yes No
SQLBulkOperations Yes Yes No
SQLCancel Yes Yes No
SQLCloseCursor Yes Yes No
SQLColAttribute Yes Yes No
SQLColAttributes No[3] No Yes
SQLColumnPrivileges Yes Yes No
SQLColumns Yes Yes No
SQLConnect Yes Yes No
SQLCopyDesc Yes Yes Yes[4]
SQLDataSources No Yes Yes
SQLDescribeCol Yes Yes No
SQLDescribeParam Yes Yes No
SQLDisconnect Yes Yes No
SQLDriverConnect Yes Yes No
SQLDrivers No Yes Yes
SQLEndTran Yes Yes No
SQLError No No[1] Yes
SQLExecDirect Yes Yes No
SQLExecute Yes Yes No
SQLExtendedFetch Yes No No
SQLFetch Yes Yes No
SQLFetchScroll Yes Yes No
SQLForeignKeys Yes Yes No
SQLFreeConnect No Yes[1] Yes
SQLFreeEnv No Yes[1] Yes
SQLFreeHandle Yes Yes No
SQLFreeStmt Yes Yes No
SQLGetConnectAttr Yes Yes No
SQLGetConnectOption No[5] No[1] Yes
SQLGetCursorName Yes Yes No
SQLGetData Yes Yes No
SQLGetDescField Yes Yes No
SQLGetDescRec Yes Yes No
SQLGetDiagField Yes Yes No
SQLGetDiagRec Yes Yes No
SQLGetEnvAttr Yes Yes No
SQLGetFunctions No[6] Yes Yes
SQLGetInfo Yes Yes No
SQLGetStmtAttr Yes Yes No
SQLGetStmtOption No[5] No[1] Yes
SQLGetTypeInfo Yes Yes No
SQLMoreResults Yes Yes No
SQLNativeSql Yes Yes No
SQLNumParams Yes Yes No
SQLNumResultCols Yes Yes No
SQLParamData Yes Yes No
SQLParamOptions No No Yes
SQLPrepare Yes Yes No
SQLPrimaryKeys Yes Yes No
SQLProcedureColumns Yes Yes No
SQLProcedures Yes Yes No
SQLPutData Yes Yes No
SQLRowCount Yes Yes No
SQLSetConnectAttr Yes Yes No
SQLSetConnectOption No[5] No[1] Yes
SQLSetCursorName Yes Yes No
SQLSetDescField Yes Yes No
SQLSetDescRec Yes Yes No
SQLSetEnvAttr Yes Yes No
SQLSetPos Yes Yes No
SQLSetParam No No Yes
SQLSetScrollOption Yes Yes No
SQLSetStmtAttr Yes Yes No
SQLSetStmtOption No[5] No[1] Yes
SQLSpecialColumns Yes Yes No
SQLStatistics Yes Yes No
SQLTablePrivileges Yes Yes No
SQLTables Yes Yes No
SQLTransact No No[1] Yes

[1] This function is deprecated in ODBC 3.x. ODBC 3.x applications should not use this function. However, an Open Group or ISO CLI–compliant application can call this function.

[2] ODBC 3.x applications should use SQLBindParameter instead of SQLBindParam. However, an Open Group or ISO CLI–compliant application can call this function.

[3] Driver writers should note that the ODBC 2.x column attributes SQL_COLUMN_PRECISION, SQL_COLUMN_SCALE, and SQL_COLUMN_LENGTH must be supported with SQLColAttribute.

[4] SQLCopyDesc is partially implemented by the Driver Manager when a descriptor is being copied across connections that belong to different drivers. Drivers are required to support SQLCopyDesc across two of their own connections. Functions such as SQLDrivers, which are implemented solely by the Driver Manager, do not show up on this list.

[5] Under certain circumstances, drivers may need to support this function. For more information, see this function's reference page.

[6] The driver can choose to support SQLGetFunctions if the set of functions that the driver supports varies from connection to connection.