EDB-ODBC Driver Functionality v12

You can use ODBC functions to query ODBC for specific information about the various attributes of the connection between EDB-ODBC and the server.

  • SQLGetInfo() returns information about the EDB-ODBC driver and Advanced Server.
  • SQLGetEnvAttr() returns information about ODBC environment attributes.
  • SQLGetConnectAttr() returns information about attributes specific to an individual connection.
  • SQLGetStmtAttr() returns information about the attributes specific to an individual statement.

You can also use ODBC functions to set various attributes of the objects that you use to interface with ODBC:

  • Use the SQLSetConnectAttr() function to set connection attributes.
  • Use the SQLSetEnvAttr() function to set environment attributes.
  • Use the SQLSetStmtAttr() function to set statement attributes.

SQLGetInfo()

The ODBC SQLGetInfo() function returns information about the EDB-ODBC driver and Advanced Server. You must have an open connection to call SQLGetInfo(), unless you specify SQL_ODBC_VER as the info_type. The signature for SQLGetInfo() is:

SQLRETURN SQLGetInfo
(
    SQLHDBC  conn_handle , // Input
    SQLUSMALLINT  info_type , // Input
    SQLPOINTER  info_pointer , // Output
    SQLSMALLINT  buffer_len , // Input
    SQLSMALLINT *  string_length_pointer  // Output
);
  • conn_handle The connection handle.

  • info_type The type of information SQLGetInfo() is retrieving.

  • info_pointer A pointer to a memory buffer that will hold the retrieved value.

    If the info_type argument is SQL_DRIVER_HDESC or SQL_DRIVER_HSTMT, the info_pointer argument is both Input and Output.

  • buffer_len is the length of the allocated memory buffer pointed to by info_pointer. If info_pointer is NULL, buffer_len is ignored. If the returned value is a fixed size, buffer_len is ignored. buffer_len is only used if the requested value is returned in the form of a character string.

  • string_length_pointer is a pointer to an SQLSMALLINT value. SQLGetInfo() writes the size of the requested value in this integer.

A typical usage is to call SQLGetInfo() with a NULL info_pointer to obtain the length of the requested value, allocate the required number of bytes, and then call SQLGetInfo() again (providing the address of the newly allocated buffer) to obtain the actual value. The first call retrieves the number of bytes required to hold the value; the second call retrieves the value.

If the size of the returned value exceeds buffer_len, the information is truncated and NULL terminated. If the returned value is a fixed size, string_length is ignored (and the size of the requested value is not provided by SQLGetInfo()).

SQLGetInfo() writes information in one of the following formats:

  • a SQLUINTEGER bitmask
  • a SQLUINTEGER flag
  • a SQLUINTEGER binary value
  • a SQLUSMALLINT value
  • a NULL terminated character string

SQLGetInfo() returns SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR, or SQL_INVALID_HANDLE.

The following table lists the information returned by EDB-ODBC about the Advanced Server connection:

SQL info_type Argument and DescriptionEDB_ODBC/Advanced Server Returns:
SQL_ACCESSIBLE_PROCEDURES: Indicates if procedures returned by SQLProcedures()can be executed by the application.Returns N. Some procedures executed by the SQLProcedures() function may be executed by the application.
SQL_ACCESSIBLE_TABLES: Indicates if the user has SELECT privileges on all table names returned by SQLTables().Returns N. The user may not have select privileges on one or more tables returned by the SQLTables() function.
SQL_ACTIVE_CONNECTIONS prev. SQL_MAX_DRIVER_CONNECTIONS: Indicates the maximum number of connections EDB-ODBC can support.Returns 0. There is no specified limit to the number of connections allowed.
SQL_ACTIVE_ENVIRONMENTS: The number of active environments EDB-ODBC can support.Returns 0. There is no specified limit to the number of environments allowed.
SQL_ACTIVE_STATEMENTS prev. SQL_MAX_CONCURRENT_ACTIVITIES: Indicates the maximum number of active statements EDB-ODBC can support.Returns 0. There is no specified limit to the number of active statements allowed.
SQL_AGGREGATE_FUNCTION: Identifies the aggregate functions supported by the server and driver.Returns SQL_AF_ALL
SQL_ALTER_DOMAIN: Identifies the ALTER DOMAIN clauses supported by the server.Returns 0. ALTER DOMAIN clauses are not supported.
SQL_ALTER_TABLE: Identifies the ALTER TABLE clauses supported by the server.Returns SQL_AT_ADD_COLUMN, SQL_AT_DROP_TABLE_CONSTRAINT_CASCADE, SQL_AT_DROP_TABLE_CONSTRAINT, SQL_AT_CONSTRAINT_INITIALLY_DEFERRED, SQL_AT_CONSTRAINT_INITIALLY_IMMEDIATE, SQL_AT_CONSTRAINT_DEFERRABLE
SQL_ASYNC_MODE: Level of Asynchronous Mode Supported by EDB-ODBC.Returns SQL_AM_NONE. Asynchronous mode is not supported.
SQL_BATCH_ROW_COUNT: Indicates how the driver returns row counts.Returns SQL_BRC_EXPLICIT. Row Counts are available when executed by calling SQLExecute or SQLExecDirect.
SQL_BATCH_SUPPORT: Indicates support for batch statement execution.Returns: SQL_BS_SELECT_EXPLICIT, SQL_BS_ROW_COUNT_EXPLICIT. The driver supports explicit batches with result set and row count generating statements.
SQL_BOOKMARK_PERSISTENCE: Indicates level of support for bookmarks.Returns: SQL_BP_DELETE, SQL_BP_TRANSACTION, SQL_BP_UPDATE, SQL_BP_SCROLL.
SQL_CATALOG_LOCATION Now SQL_QUALIFIER_LOCATION: Indicates the position of the catalog in a qualified table name.Returns SQL_CL_START. The catalog portion of a qualified table name is at the beginning of the name.
SQL_CATALOG_NAME Now SQL_QUALIFIER_NAME: Indicates support for catalog names.Returns Y. The server supports catalog names.
SQL_CATALOG_NAME_SEPARATOR Now SQL_QUALIFIER_NAME_SEPARATOR: Character separating the catalog name from the adjacent name element.Returns '.' The server expects a '.' character between the qualifier and the table name.
SQL_CATALOG_TERM Now SQL_QUALIFIER_TERM: The term used to describe a catalog.Returns catalog.
SQL_CATALOG_USAGE Now SQL_QUALIFIER_USAGE: Indicates the SQL statements that may refer to catalogs.Returns SQL_CU_DML_STATEMENTS. Catalog names can be used in SELECT, INSERT, UPDATE, DELETE, SELECT FOR UPDATE and positioned UPDATE and DELETE statements.
SQL_COLLATION_SEQ: Returns the name of the Collation Sequence.Returns an empty string. The name of the default collation is unknown.
SQL_COLUMN_ALIAS: Indicates server support for column aliases.Returns Y. The server supports column aliases.
SQL_CONCAT_NULL_BEHAVIOR: Indicates how the server handles concatenation of NULL values.Returns SQL_CB_NON_NULL. Concatenation of a NULL value and a non NULL value will result in a NULL value.
SQL_CONVERT_BIGINT: Indicates conversion support from the BIGINT type using the CONVERT function.Returns 0. The server does not support conversion.
SQL_CONVERT_BINARY: Indicates conversion support from the BINARY type using the CONVERT function.Returns 0. The server does not support conversion.
SQL_CONVERT_BIT: Indicates conversion support from the BIT type using the CONVERT function.Returns: SQL_CVT_INTEGER, SQL_CVT_BIT.
SQL_CONVERT_CHAR: Indicates conversion support from the CHAR type using the CONVERT function.Returns 0. The server does not support conversion.
SQL_CONVERT_DATE: Indicates conversion support from the DATE type using the CONVERT function.Returns 0. The server does not support conversion.
SQL_CONVERT_DECIMAL: Indicates conversion support from the DECIMAL type using the CONVERT function.Returns 0. The server does not support conversion.
SQL_CONVERT_DOUBLE: Indicates conversion support from the DOUBLE type using the CONVERT function.Returns 0. The server does not support conversion.
SQL_CONVERT_FLOAT: Indicates conversion support from the FLOAT type using the CONVERT function.Returns 0. The server does not support conversion.
SQL_CONVERT_FUNCTIONS: Lists the scalar conversion functions supported by the server and driver using the CONVERT function.Returns: SQL_FN_CVT_CONVERT.
SQL_CONVERT_INTEGER: Lists the conversion support from the INTEGER type using the CONVERT function.Returns: SQL_CVT_INTEGER, SQL_CVT_BIT.
SQL_CONVERT_INTERVAL_DAY_TIME: Indicates conversion support from the INTERVAL_DAY_TIME type using the CONVERT function.This info_type is not currently supported.
SQL_CONVERT_INTERVAL_YEAR_MONTH: Indicates conversion support from the INTERVAL_YEAR_MONTH type using the CONVERT function.This info_type is not currently supported.
SQL_CONVERT_LONGVARBINARY: Indicates conversion support for the LONG_VARBINARY type using the CONVERT function.Returns 0. The server does not support conversion.
SQL_CONVERT_LONGVARCHAR: Indicates conversion support for the LONGVARCHAR type using the CONVERT function.Returns 0. The server does not support conversion.
SQL_CONVERT_NUMERIC: Indicates conversion support for the NUMERIC type using the CONVERT function.Returns 0. The server does not support conversion.
SQL_CONVERT_REAL: Indicates conversion support for the REAL type using the CONVERT functionReturns 0. The server does not support conversion.
SQL_CONVERT_SMALLINT: Indicates conversion support for the SMALLINT type using the CONVERT function.Returns: SQL_CVT_INTEGER, SQL_CVT_BIT.
SQL_CONVERT_TIME: Indicates conversion support for TIME type using the CONVERT function.Returns 0. The server does not support conversion.
SQL_CVT_TIMESTAMP: Indicates conversion support for TIMESTAMP type using the CONVERT function.Returns 0. The server does not support conversion.
SQL_CONVERT_TINYINT: Indicates conversion support for the TINYINT type using the CONVERT function.Returns: SQL_CVT_INTEGER, SQL_CVT_BIT.
SQL_CONVERT_VARBINARY: Indicates conversion support for the VARBINARY type using the CONVERT function.Returns 0. The server does not support conversion.
SQL_CONVERT_VARCHAR: Indicates conversion support for VARCHAR type using the CONVERT function.Returns: SQL_CVT_INTEGER, SQL_CVT_BIT.
SQL_CONVERT_WCHAR: Indicates conversion support for the WCHAR type using the CONVERT function.This info_type is valid only when using the Unicode driver. Returns 0. The server does not support conversion.
SQL_CONVERT_WLONGVARCHAR: Indicates conversion support for the WLONGVARCHAR type using the CONVERT function.This info_type is valid only when using the Unicode driver. Returns 0. The server does not support conversion.
SQL_CONVERT_WVARCHAR: Indicates conversion support for the WVARCHAR type using the CONVERT function.This info_type is valid only when using the Unicode driver. Returns 0. The server does not support conversion.
SQL_CORRELATION_NAME: Indicates server support for correlation names.Returns SQL_CN_ANY. Correlation names are supported and can be any valid name.
SQL_CREATE_ASSERTION: Indicates support for the CREATE ASSERTION statement.Returns 0. The CREATE ASSERTION statement is not supported.
SQL_CREATE_CHARACTER_SET: Indicates support for CREATE CHARACTER statement.Returns 0. The CREATE CHARACTER statement is not supported.
SQL_CREATE_COLLATION: Indicates support for the CREATE COLLATION.Returns 0. The CREATE COLLATION statement is not supported.
SQL_CREATE_DOMAIN: Indicates support for the CREATE DOMAIN statement.Returns 0. The CREATE DOMAIN statement is not supported.
SQL_CREATE_SCHEMA: Indicates support for the CREATE SCHEMA statement.Returns: SQL_CS_CREATE_SCHEMA, SQL_CS_AUTHORIZATION.
SQL_CREATE_TABLE: Indicates support for the CREATE TABLE statement.Returns: SQL_CT_CREATE_TABLE, SQL_CT_GLOBAL_TEMPORARY, SQL_CT_CONSTRAINT_INITIALLY_DEFERRED, SQL_CT_CONSTRAINT_INITIALLY_IMMEDIATE, SQL_CT_CONSTRAINT_DEFERRABLE, SQL_CT_COLUMN_CONSTRAINT, SQL_CT_COLUMN_DEFAULT, SQL_CT_TABLE_CONSTRAINT, SQL_CT_CONSTRAINT_NAME_DEFINITION
SQL_CREATE_TRANSLATION: Indicates support for the CREATE TRANSLATION statement.Returns 0. The CREATE TRANSLATION statement is not supported.
SQL_CREATE_VIEW: Indicates support for the CREATE VIEW statement.Returns SQL_CV_CREATE_VIEW.
SQL_CURSOR_COMMIT_BEHAVIOR: Indicates how a COMMIT operation affects the cursor.Returns SQL_CB_PRESERVE. Cursors are unchanged, and can continue to fetch data.
SQL_CURSOR_ROLLBACK_BEHAVIOR: Indicates the server behavior after a ROLLBACK operation.Returns SQL_CB_PRESERVE. Cursors are unchanged, and can continue to fetch data.
SQL_CURSOR_SENSITIVITY:Indicates how the server synchronizes changes to a result set.This info_type is not currently supported.
SQL_DATA_SOURCE_NAME: Returns the server name used during connection.The value returned is determined by the connection properties.
SQL_DATA_SOURCE_READ_ONLY: Indicates if the connection is in READ ONLY mode.The value returned is determined by the connection properties.
SQL_DATABASE_NAME: Returns the name of the database.The value returned is determined by the connection properties.
SQL_DATETIME_LITERALS: Indicates the DATETIME LITERALS supported by the server.This info_type is not supported.
SQL_DBMS_NAME: Returns the name of the DBMS system.Returns the value given by the dbms_name parameter from the odbc.ini file on Linux or the dbms_name field of page 2 of the Advanced Options dialog box when defining a data source in Windows. The default is EnterpriseDB.
SQL_DBMS_VER: Returns the server version.Determined by the server.
SQL_DDL_INDEX: Indicates support for creating and dropping indexes.Returns: SQL_DI_CREATE_INDEX, SQL_DI_DROP_INDEX.
SQL_DEFAULT_TXN_ISOLATION: Indicates support for transaction isolation by the server.Returns TXN_READ_COMMITTED. Non-repeatable or phantom reads are possible; Dirty reads are not.
SQL_DESCRIBE_PARAMETER: Indicates support for the DESCRIBE INPUT statement.Returns N. The DESCRIBE INPUT statement is not supported.
SQL_DM_VER: The version of the Driver Manager.Determined by driver manager.
SQL_DRIVER_HDBC: The Driver's connection handle.Returns an SQLULEN value that contains the driver’s connection handle.
SQL_DRIVER_HDESC: The Driver descriptor handle.Returns an SQLULEN value that contains driver’s descriptor handle.
SQL_DRIVER_HENV: The Driver's environment handle.Returns an SQLULEN value that contains the driver’s environment handle.
SQL_DRIVER_HLIB: The Driver handle.Returns an SQLULEN value that contains the library handle (returned to the ODBC driver manager when the manager loaded the driver).
SQL_DRIVER_HSTMT: The Driver's statement handle.Returns an SQLULEN value that contains the driver’s statement handle.
SQL_DRIVER_NAME: The name of the driver.Returns EDB-ODBC.DLL
SQL_DRIVER_ODBC_VER: Identifies the ODBC version that the driver supports.Returns 03.50
SQL_DRIVER_VER: Identifies the driver version.Returns 9.0.0.6
SQL_DROP_ASSERTION: Lists the DROP ASSERTION clauses supported by the server.Returns 0
SQL_DROP_CHARACTER_SET: Lists the DROP CHARACTER clauses supported by the server.Returns 0
SQL_DROP_COLLATION: Lists the DROP COLLATION clauses supported by the server.Returns 0
SQL_DROP_DOMAIN: Lists the DROP DOMAIN clauses supported by the server.Returns 0
SQL_DROP_SCHEMA: Lists the DROP SCHEMA clauses supported by the server.Returns: SQL_DS_DROP_SCHEMA, SQL_DS_RESTRICT, SQL_DS_CASCADE.
SQL_DROP_TABLE: Lists the DROP TABLE clauses supported by the server.Returns: SQL_DT_DROP_TABLE, SQL_DS_RESTRICT, SQL_DS_CASCADE.
SQL_DROP_TRANSLATION: Lists the DROP TRANSLATION clauses supported by the server.Returns 0.
SQL_DROP_VIEW: Lists the DROP VIEW clauses supported by the server.Returns: SQL_DV_DROP_VIEW, SQL_DS_RESTRICT, SQL_DS_CASCADE.
SQL_DYNAMIC_CURSOR_ATTRIBUTES1: Describes the first set of dynamic cursor attributes supported by the driver.Returns 0
SQL_DYNAMIC_CURSOR_ATTRIBUTES2: Describes the second set of dynamic cursor attributes supported by the driver.Returns 0
SQL_EXPRESSIONS_IN_ORDERBY: Indicates server support for ORDER BY.Returns Y.
SQL_FETCH_DIRECTION: Indicates FETCH order options (deprecated in ODBC 3.0).Returns: SQL_FD_FETCH_NEXT, SQL_FD_FETCH_FIRS, SQL_FD_FETCH_LAST, SQL_FD_FETCH_PRIOR, SQL_FD_FETCH_ABSOLUTE, SQL_FD_FETCH_RELATIVE, SQL_FD_FETCH_BOOKMARK.
SQL_FILE_USAGE: Indicates how a single-tier driver treats files on the server.Returns SQL_FILE_NOT_SUPPORTED. The driver is not a single-tier file.
SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES1: Describes the forward-only cursor attributes supported by the driver.Returns SQL_CA1_NEXT.
SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2: Describes extended attributes for the forward-only cursor designated by SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES1.Returns: SQL_CA2_READ_ONLY_CONCURRENCY, SQL_CA2_CRC_EXACT.
SQL_GETDATA_EXTENSIONS: Lists supported extensions to SQLGetData.Returns: SQL_GD_ANY_COLUMN, SQL_GD_ANY_ORDER, SQL_GD_BLOCK, SQL_GD_BOUND.
SQL_GROUP_BY: Indicates the relationship between a GROUP BY clause and columns in the SELECT list.Returns SQL_GB_GROUP_BY_EQUALS_SELECT.
SQL_IDENTIFIER_CASE: Indicates case-sensitivity and case-storage of SQL identifiers.Returns SQL_IC_LOWER.
SQL_INDEX_KEYWORDS: Indicates support for the CREATE INDEX statement.Returns SQL_IK_NONE.
SQL_INFO_SCHEMA_VIEWS: Lists the views supported in the INFORMATION_SCHEMA.Returns 0.
SQL_INTEGRITY Prev. SQL_ODBC_SQL_OPT_IEF: Indicates server support for referential integrity syntax checking.Returns N.
SQL_INSERT_STATEMENT: Indicates level of support for the INSERT statement.Returns: SQL_IS_INSERT_LITERALS, SQL_IS_INSERT_SEARCHED, SQL_IS_SELECT_INTO.
SQL_KEYSET_CURSOR_ATTRIBUTES1: Describes the first set of keyset cursor attributes supported by the driver.Returns: SQL_CA1_NEXT, SQL_CA1_ABSOLUTE, SQL_CA1_RELATIVE, SQL_CA1_BOOKMARK, SQL_CA1_LOCK_NO_CHANGE, SQL_CA1_POS_POSITION, SQL_CA1_POS_UPDATE, SQL_CA1_POS_DELETE, SQL_CA1_POS_REFRESH, SQL_CA1_BULK_ADD, SQL_CA1_BULK_UPDATE_BY_BOOKMARK, SQL_CA1_BULK_DELETE_BY_BOOKMARK, SQL_CA1_BULK_FETCH_BY_BOOKMARK.
SQL_KEYSET_CURSOR_ATTRIBUTES2: Describes the second set of keyset cursor attributes supported by the driver.Returns: SQL_CA2_READ_ONLY_CONCURRENCY, SQL_CA2_OPT_ROWVER_CONCURRENCY, SQL_CA2_SENSITIVITY_ADDITIONS, SQL_CA2_SENSITIVITY_DELETIONS, SQL_CA2_SENSITIVITY_UPDATES, SQL_CA2_CRC_EXACT.
SQL_KEYWORDS: Identifies the server specific reserved keywords.Returns “”. There are no server specific reserved keywords.
SQL_LIKE_ESCAPE_CLAUSE: Indicates support for an escape character in LIKE predicates.Returns N. Advanced Server does not support escape characters in LIKE predicates.
SQL_LOCK_TYPES: Lists supported lock types (deprecated in ODBC 3.0).Returns SQL_LCK_NO_CHANGE.
SQL_MAX_ASYNC_CONCURRENT_STATEMENTS: The number of active concurrent statements that the driver can support.This info_type is currently unsupported.
SQL_MAX_BINARY_LITERAL_LEN: The maximum length of a binary literal.Returns 0. The maximum length is unspecified.
SQL_MAX_CATALOG_NAME_LEN: The maximum length of a catalog name on the server.Returns 0. The maximum length is unspecified.
SQL_MAX_QUALIFIER_NAME_LEN: The maximum length of a qualifier.Returns 0. The maximum length is unspecified.
SQL_MAX_CHAR_LITERAL_LEN: The maximum number of characters in a character string.Returns 0. The maximum length is unspecified.
SQL_MAX_COLUMN_NAME_LEN: The maximum length of a column name.Returns 64. Column names cannot exceed 64 characters in length.
SQL_MAX_COLUMNS_IN_GROUP_BY: The maximum number of columns allowed in a GROUP BY clause.Returns 0. The maximum length is unspecified.
SQL_MAX_COLUMNS_IN_INDEX: The maximum number of columns allowed in an index.Returns 0. The maximum length is unspecified.
SQL_MAX_COLUMNS_IN_ORDER_BY: The maximum number of columns allowed in an ORDER BY clause.Returns 0. The maximum length is unspecified.
SQL_MAX_COLUMNS_IN_SELECT: The maximum number of columns allowed in a SELECT list.Returns 0. The maximum length is unspecified.
SQL_MAX_COLUMNS_IN_TABLE: The maximum number of columns allowed in a table.Returns 0. The maximum length is unspecified.
SQL_MAX_CONCURRENT_ACTIVITIES prev. SQL_MAX_ACTIVE_STATEMENTS: The maximum number of active SQL statements that the driver can support.Returns 0. The maximum length is unspecified.
SQL_MAX_CURSOR_NAME_LEN: The maximum length of a cursor name.Returns 32. A cursor name cannot exceed 32 characters in length.
SQL_MAX_DRIVER_CONNECTIONS prev. SQL_ACTIVE_CONNECTIONS: The maximum number of active connections the driver can support.Returns 0. There is no specified limit to the number of connections supported.
SQL_MAX_IDENTIFIER_LEN: The maximum identifier length allowed by the server.Returns 64. Identifiers cannot exceed 64 characters in length.
SQL_MAX_INDEX_SIZE: The maximum number of bytes allowed in the (combined) fields of an index.Returns 0. The maximum size is unspecified.
SQL_MAX_OWNER_NAME_LEN Now SQL_MAX_SCHEMA_NAME_LEN: The maximum length of an owner name allowed by the server.Returns 64. The maximum length of an owner name is 64 characters.
SQL_MAX_PROCEDURE_NAME_LEN: The maximum length of a procedure name allowed by the server.Returns 0. The maximum length is unspecified.
SQL_MAX_QUALIFIER_NAME_LEN Now SQL_MAX_CATALOG_NAME_LEN: The maximum length of a qualifier name allowed by the server.Returns 0. The maximum length of a qualifier is unspecified.
SQL_MAX_ROW_SIZE: The maximum length of a row.Returns 0. The maximum row length is unspecified.
SQL_MAX_ROW_SIZE_INCLUDES_LONG: Indicates whether the SQL_MAX_ROW_SIZE includes the length of any LONGVARCHAR or LONGVARBINARY columns in the row.Returns Y. SQL_MAX_ROW_SIZE includes the length of any LONGVARCHAR or LONGVARBINARY columns in the row.
SQL_MAX_SCHEMA_NAME_LEN: The maximum length of a schema name allowed by the server.Returns 64. The maximum length of a schema name is 64 characters.
SQL_MAX_STATEMENT_LEN: The maximum length of a SQL statement.Returns 0. Maximum statement length is limited by available memory.
SQL_MAX_TABLE_NAME_LEN: The maximum length of a table name allowed by the server.Returns 64. The maximum length of a table name is 64 characters.
SQL_MAX_TABLES_IN_SELECT: The maximum number of tables allowed in the FROM clause of a SELECT statement.Returns 0. The maximum number of tables allowed is unspecified.
SQL_MAX_USER_NAME_LEN: The maximum length of the user name allowed by the server.Returns 0. The maximum length of a user name is unspecified.
SQL_MULT_RESULT_SETS: Indicates server support for multiple result sets.Returns Y. Advanced Server supports multiple result sets.
SQL_MULTIPLE_ACTIVE_TXN: Indicates if the server supports multiple active transactions.Returns Y. Advanced Server supports multiple active transactions.
SQL_NEED_LONG_DATA_LEN: Indicates if the server needs the length of a LONG data value before receiving the value.Returns N. Advanced Server does not need the length of a LONG data value before receiving the value.
SQL_NON_NULLABLE_COLUMNS: Indicates if the server supports NOT NULL values in columns.Returns SQL_NNC_NON_NULL. Advanced Server does support NOT NULL values in columns.
SQL_NULL_COLLATION: Indicates where NULL values are located in a result set.Returns SQL_NC_HIGH. The location of NULL values in a data set is determined by the ASC and DESC keywords; NULL values are sorted to the high end of the data set.
SQL_NUMERIC_FUNCTIONS: Lists the numeric functions supported by the driver and the server.Returns: SQL_FN_NUM_ABS, SQL_FN_NUM_ATAN, SQL_FN_NUM_CEILING, SQL_FN_NUM_COS, SQL_FN_NUM_EXP, SQL_FN_NUM_FLOOR, SQL_FN_NUM_LOG, SQL_FN_NUM_MOD, SQL_FN_NUM_SIGN, SQL_FN_NUM_SIN, SQL_FN_NUM_SQRT, SQL_FN_NUM_TAN, SQL_FN_NUM_RAND, SQL_FN_NUM_POWER, SQL_FN_NUM_ROUND.
SQL_ODBC_API_CONFORMANCE: Indicates the ODBC 3.0 compliance levelReturns SQL_OAC_LEVEL1. The driver conforms to ODBC Level 1 interface.
SQL_ODBC_INTERFACE_CONFORMANCE: Indicates the ODBC interface that the driver adheres to.Returns SQL_OIC_CORE.
SQL_ODBC_SAG_CLI_CONFORMANCE: Indicates the SQL Access Group compliance level that the driver adheres to.Returns SQL_OSCC_NOT_COMPLIANT. The driver is not SAG CLI compliant.
SQL_ODBC_SQL_CONFORMANCE: Indicates the SQL grammar level that the driver conforms to.Returns SQL_OSC_CORE. The driver conforms to the core grammar level.
SQL_ODBC_SQL_OPT_IEF Now SQL_INTEGRITY: Indicates server support for referential integrity syntax checking.Returns N. The server does not support referential integrity syntax checking.
SQL_ODBC_VER: The ODBC version supported by the driver managerReturns 03.52.0000.
SQL_OJ_CAPABILITIES: Identifies the outer joins that are supported by the server.Returns: SQL_OJ_LEFT, SQL_OJ_RIGHT, SQL_OJ_FULL, SQL_OJ_NESTED, SQL_OJ_NOT_ORDERED, SQL_OJ_INNER, SQL_OJ_ALL_COMPARISON_OPS.
SQL_OUTER_JOINS: Indicates support for outer joins and the outer join escape sequence.Returns Y. Outer joins are supported.
SQL_OWNER_TERM prev. SQL_SCHEMA_TERM: The term used to describe a schema.Returns schema.
SQL_ORDER_BY_COLUMNS_IN_SELECT: Indicates if the columns in an ORDER BY clause must be included in the SELECT list.Returns N. Columns in an ORDER BY clause do not have to be in the SELECT list.
SQL_OWNER_USAGE prev. SQL_SCHEMA_USAGE: Returns a string that indicates which statements support schema qualifiers.Returns: SQL_OU_DML_STATEMENTS, SQL_OU_TABLE_DEFINITION, SQL_OU_INDEX_DEFINITION, SQL_OU_PRIVILEGE_DEFINITION.
SQL_PARAM_ARRAY_ROW_COUNTS: Indicates if the server will return a single row count or separate row counts for each element in an array when executing a parameterized statement with at least one parameter bound to the array.Returns SQL_PARC_BATCH, if separate row counts are available for each element in an array. SQL_PARC_NO_BATCH if a single, cumulative row count is available for the entire array.
SQL_PARAM_ARRAY_SELECTS: Indicates if the server will return one result set or a separate result set for each element in an array (or if the driver does not allow this feature) when executing a parameterized statement with at least one parameter bound to the array.Returns SQL_PAS_BATCH. One data set is available for each element in an array.
SQL_POS_OPERATION: Lists the options supported by SQLSetPos().Returns: SQL_POS_POSITION, SQL_POS_REFRESH, SQL_POS_UPDATE, SQL_POS_DELETE, SQL_POS_ADD.
SQL_POSITIONED_STATEMENTS: Lists the supported positioned SQL statements.Returns: SQL_PS_POSITIONED_DELETE, SQL_PS_POSITIONED_UPDATE, SQL_PS_SELECT_FOR_UPDATE.
SQL_PROCEDURE_TERM: The term used to describe a procedure.Returns procedure.
SQL_PROCEDURES: Indicates if the server and the driver support SQL procedures and procedure invocation syntax.Returns Y. The server and driver support procedures and procedure invocation syntax.
SQL_QUALIFIER_LOCATION prev. SQL_CATALOG_LOCATION: Indicates the position of the schema name in a qualified table name.Returns SQL_CL_START. The catalog portion of a qualified table name is at the beginning of the name.
SQL_QUALIFIER_NAME prev. SQL_CATALOG_NAME: Indicates server support for catalog names.Returns Y. The server supports catalog names.
SQL_QUALIFIER_NAME_SEPARATOR prev. SQL_CATALOG_NAME_SEPARATOR: Character separating the qualifier name from the adjacent name element.Returns '.'. The server expects a '.' character between the qualifier and the table name.
SQL_QUALIFIER_TERM prev. SQL_CATALOG_TERM: The term used to describe a qualifier.Returns catalog.
SQL_QUALIFIER_USAGE prev. SQL_CATALOG_USAGE: Indicates the SQL statements that may refer to qualifiers.Returns SQL_CU_DML_STATEMENTS. Catalog names can be used in SELECT, INSERT, UPDATE, DELETE, SELECT FOR UPDATE and positioned UPDATE and DELETE statements.
SQL_QUALIFIER_USAGE Now SQL_CATALOG_USAGE: Identifies DML statements that support qualifier names.Returns SQL_CU_DML_STATEMENTS. Qualifiers can be used in all DML statements (SELECT, INSERT, UPDATE, DELETE, SELECT FOR UPDATE).
SQL_QUOTED_IDENTIFIER_CASE: Indicates case sensitivity of quoted identifiers.Returns SQL_IC_SENSITIVE. Quoted identifiers are case sensitive.
SQL_QUALIFIER_NAME_SEPARATOR Now SQL CATALOG_NAME_SEPARATOR: The character that separates the name qualifier from the name element.Returns . The '.' character is used as a separator in qualified names.
SQL_QUALIFIER_TERM: The term used to describe a qualifier.Returns catalog
SQL_QUALIFIER_LOCATION: The position of the qualifier in a qualified table name.Returns SQL_CL_START. The qualifier precedes the table name in a qualified table name.
SQL_ROW_UPDATES: Indicates if keyset-driven or mixed cursors maintain row versions or values.Returns Y. Cursors maintain values for all fetched rows and can detect updates to the row values.
SQL_SCHEMA_TERM: The term used to describe a schema.Returns schema
SQL_SCHEMA_USAGE: Indicates the SQL statements that may refer to schemas.Returns: SQL_OU_DML_STATEMENTS, SQL_OU_TABLE_DEFINITION, SQL_OU_INDEX_DEFINITION, SQL_OU_PRIVILEGE_DEFINITION.
SQL_SCROLL_CONCURRENCY: Indicates the cursor concurrency control options supported by the server.Returns: SQL_SCCO_READ_ONLY, SQL_SCCO_OPT_ROWVER.
SQL_SCROLL_OPTIONS: Indicates the cursor scroll options supported by the server.Returns: SQL_SO_FORWARD_ONLY, SQL_SO_KEYSET_DRIVEN, SQL_SO_STATIC.
SQL_SEARCH_PATTERN_ESCAPE: The escape character that allows use of the wildcard characters % and _ in search patterns.Returns . The '' character is used as an escape character for the '%' and '_' characters in search patterns.
SQL_SERVER_NAME: Indicates the name of the host.The returned value is determined by connection properties.
SQL_SPECIAL_CHARACTERS: Indicates any special characters allowed in identifier names.Returns _. The underscore character is allowed in identifier names.
SQL_SQL_CONFORMANCE: Indicates the level of SQL-92 compliance.Returns SQL_SC_SQL92_ENTRY. The driver is SQL92 Entry level compliant.
SQL_SQL92_DATETIME_FUNCTIONS: Lists the datetime functions supported by the server.Returns: SQL_SDF_CURRENT_DATE, SQL_SDF_CURRENT_TIME, SQL_SDF_CURRENT_TIMESTAMP.
SQL_SQL92_FOREIGN_KEY_DELETE_RULE: Indicates the server-enforced rules for using a foreign key in a DELETE statement.Returns: SQL_SFKD_CASCADE, SQL_SFKD_NO_ACTION, SQL_SFKD_SET_DEFAULT, SQL_SFKD_SET_NULL.
SQL_SQL92_FOREIGN_KEY_UPDATE_RULE: Indicates the server-enforced rules for using a foreign key in an UPDATE statement.Returns: SQL_SFKU_CASCADE, SQL_SFKU_NO_ACTION, SQL_SFKU_SET_DEFAULT, SQL_SFKU_SET_NULL.
SQL_SQL92_GRANT: Indicates the supported GRANT statement clauses.Returns: SQL_SG_DELETE_TABLE, SQL_SG_INSERT_TABLE, SQL_SG_REFERENCES_TABLE, SQL_SG_SELECT_TABLE, SQL_SG_UPDATE_TABLE.
SQL_SQL92_NUMERIC_VALUE_FUNCTIONS: Lists the scalar numeric functions supported by the server and driver.Returns: SQL_SNVF_BIT_LENGTH, SQL_SNVF_CHAR_LENGTH, SQL_SNVF_CHARACTER_LENGTH, SQL_SNVF_EXTRACT, SQL_SNVF_OCTET_LENGTH, SQL_SNVF_POSITION.
SQL_SQL92_PREDICATES, Identifies the predicates of a SELECT statement supported by the server.Returns: SQL_SP_EXISTS, SQL_SP_ISNOTNULL, SQL_SP_ISNULL, SQL_SP_OVERLAPS, SQL_SP_LIKE, SQL_SP_IN, SQL_SP_BETWEEN, SQL_SP_COMPARISON, SQL_SP_QUANTIFIED_COMPARISON.
SQL_SQL92_RELATIONAL_JOIN_OPERATORS: Identifies the relational join operators supported by the server.Returns: SQL_SRJO_CROSS_JOIN, SQL_SRJO_EXCEPT_JOIN, SQL_SRJO_FULL_OUTER_JOIN, SQL_SRJO_INNER_JOIN, SQL_SRJO_INTERSECT_JOIN, SQL_SRJO_LEFT_OUTER_JOIN, SQL_SRJO_NATURAL_JOIN, SQL_SRJO_RIGHT_OUTER_JOIN, SQL_SRJO_UNION_JOIN.
SQL_SQL92_REVOKE: Identifies the clauses in a REVOKE statement that are supported by the server.Returns: SQL_SR_DELETE_TABLE, SQL_SR_INSERT_TABLE, SQL_SR_REFERENCES_TABLE, SQL_SR_SELECT_TABLE, SQL_SR_UPDATE_TABLE.
SQL_SQL92_ROW_VALUE_CONSTRUCTOR: Indicates the row value constructor expressions in a SELECT statement that are supported by the server.Returns: SQL_SRVC_VALUE_EXPRESSION, SQL_SRVC_NULL.
SQL_SQL92_STRING_FUNCTIONS: Lists the string scalar functions supported by the server and driver.Returns: SQL_SSF_CONVERT, SQL_SSF_LOWER, SQL_SSF_UPPER, SQL_SSF_SUBSTRING, SQL_SSF_TRANSLATE, SQL_SSF_TRIM_BOTH, SQL_SSF_TRIM_LEADING, SQL_SSF_TRIM_TRAILING.
SQL_SQL92_VALUE_EXPRESSIONS: Indicates the value expressions supported by the server.Returns: SQL_SVE_CASE, SQL_SVE_CAST, SQL_SVE_COALESCE, SQL_SVE_NULLIF.
SQL_STANDARD_CLI_CONFORMANCE: Indicates the CLI standard the driver conforms to.This info_type is currently unsupported.
SQL_STATIC_CURSOR_ATTRIBUTES1: Describes the first set of static cursor attributes supported by the driver.Returns: SQL_CA1_NEXT, SQL_CA1_ABSOLUTE, SQL_CA1_RELATIVE, SQL_CA1_BOOKMARK, SQL_CA1_LOCK_NO_CHANGE, SQL_CA1_POS_POSITION, SQL_CA1_POS_UPDATE, SQL_CA1_POS_DELETE, SQL_CA1_POS_REFRESH, SQL_CA1_BULK_ADD, SQL_CA1_BULK_UPDATE_BY_BOOKMARK, SQL_CA1_BULK_DELETE_BY_BOOKMARK, SQL_CA1_BULK_FETCH_BY_BOOKMARK.
SQL_STATIC_CURSOR_ATTRIBUTES2: Describes the second set of static cursor attributes supported by the driver.Returns: SQL_CA2_READ_ONLY_CONCURRENCY, SQL_CA2_OPT_ROWVER_CONCURRENCY, SQL_CA2_SENSITIVITY_ADDITIONS, SQL_CA2_SENSITIVITY_DELETIONS, SQL_CA2_SENSITIVITY_UPDATES, SQL_CA2_CRC_EXACT.
SQL_STATIC_SENSITIVITY: Indicates whether changes made to a static cursor by SQLSetPos() or UPDATE or DELETE statements are detected by the application.Returns: SQL_SS_ADDITIONS, SQL_SS_DELETIONS, SQL_SS_UPDATES.
SQL_STRING_FUNCTIONS: Lists the scalar string functions supported by the server and driver.Returns: SQL_FN_STR_CONCAT, SQL_FN_STR_LTRIM, SQL_FN_STR_LENGTH, SQL_FN_STR_LOCATE, SQL_FN_STR_LCASE, SQL_FN_STR_RTRIM, SQL_FN_STR_SUBSTRING, SQL_FN_STR_UCASE.
SQL_SUBQUERIES: Identifies the subquery predicates to a SELECT statement supported by the server.Returns: SQL_SQ_COMPARISON, SQL_SQ_EXISTS, SQL_SQ_IN, SQL_SQ_QUANTIFIED.
SQL_SYSTEM_FUNCTIONS: Lists the scalar system functions supported by the server and driver.Returns 0.
SQL_TABLE_TERM: The term used to describe a table.Returns table.
SQL_TIMEDATE_ADD_INTERVALS: Indicates the timestamp intervals supported by the server for the TIMESTAMPADD scalar function.Returns 0.
SQL_TIMEDATE_DIFF_INTERVALS: Indicates the timestamp intervals supported by the server for the TIMESTAMPDIFF scalar function.Returns 0
SQL_TIMEDATE_FUNCTIONS: Indicates the date and time functions supported by the server.Returns: SQL_FN_TD_NOW, SQL_FN_TD_CURDATE, SQL_FN_TD_CURTIME.
SQL_TXN_CAPABLE: Identifies the transaction support offered by the server and driver.Returns SQL_TC_ALL. Transactions can contain both DML and DDL statements.
SQL_TXN_ISOLATION_OPTION: Indicates the transaction isolation level supported by the server.Returns: SQL_TXN_READ_COMMITTED, SQL_TXN_SERIALIZABLE.
SQL_UNION: Indicates server support for the UNION clause.Returns: SQL_U_UNION, SQL_U_UNION_ALL.
SQL_USER_NAME: Identifies the name of the user connected to a database; may be different than the login name.This value is determined by the connection properties.
SQL_XOPEN_CLI_YEAR: The publication year of the X/Open specification that the driver manager complies with.This info_type is currently unsupported.

Connection Attributes

You can use the ODBC SQLGetConnectAttr() and SQLSetConnectAttr() functions to retrieve or set the value of a connection attribute.

SQLGetConnectAttr()

The SQLGetConnectAttr() function returns the current value of a connection attribute. The signature is:

SQLRETURN SQLGetConnectAttr
(
    SQLHDBC  conn_handle,  //Input
    SQLINTEGER  attribute,  //Input
    SQLPOINTER  value_pointer,  //Output
    SQLINTEGER  buffer_length,  //Input
    SQLINTEGER *  string_length_pointer  //Output
);
  • conn_handle The connection handle.

  • attribute identifies the attribute whose value you wish to retrieve.

  • value_pointer A pointer to the location in memory that will receive the attribute value.

  • buffer_length If attribute is defined by ODBC and value_pointer points to a character string or binary buffer, buffer_length is the length of value_pointer. If value_pointer points to a fixed-size value (such as an integer), buffer_length is ignored.

    If EDB-ODBC defines the attribute, SQLGetConnectAttr() sets the buffer_length parameter. buffer_length can be:

    Value typeMeaning
    Character stringThe length of the character string
    Binary bufferThe result of SQL_LEN_BINARY_ATTR(length)
    Fixed length data typeSQL_IS_INTEGER or SQL_IS_UINTEGER
    Any other typeSQL_IS_POINTER
  • string_length_pointer A pointer to a SQLINTEGER that receives the number of bytes available to return in value_pointer. If value_pointer is NULL, string_length_pointer is not returned.

This function returns SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_NO_DATA, SQL_ERROR or SQL_INVALID_HANDLE.

The following table lists the connection attributes supported by EDB-ODBC.

AttributeSupported?Notes
SQL_ATTR_ACCESS_MODENOSQL_MODE_READ_WRITE
SQL_ATTR_ASYNC_ENABLENOSQL_ASYNC_ENABLE_OFF
SQL_ATTR_AUTO_IPDNO
SQL_ATTR_AUTOCOMMITYESSQL_AUTOCOMMIT, SQL_AUTOCOMMIT_ON, SQL_AUTOCOMMIT_OFF
SQL_ATTR_CONNECTION_TIMEOUTNO
SQL_ATTR_CURRENT_CATALOGNO
SQL_ATTR_DISCONNECT_BEHAVIORNO
SQL_ATTR_ENLIST_IN_DTCYESFor win32 and with conditional compilation
SQL_ATTR_ENLIST_IN_XANO
SQL_ATTR_LOGIN_TIMEOUTNOSQL_LOGIN_TIMEOUT
SQL_ATTR_ODBC_CURSORSNO
SQL_ATTR_PACKET_SIZENO
SQL_ATTR_QUIET_MODENO
SQL_ATTR_TRACENO
SQL_ATTR_TRACEFILENO
SQL_ATTR_TRANSLATE_LIBNO
SQL_ATTR_TRANSLATE_OPTIONNO
SQL_ATTR_TXN_ISOLATIONYESSQL_TXN_ISOLATION, SQL_DEFAULT_TXN_ISOLATION

SQLSetConnectAttr()

You can use the ODBC SQLSetConnectAttr() function to set the values of connection attributes. The signature of the function is:

SQLRETURN SQLSetConnectAttr
(
    SQLHDBC  conn_handle , // Input
    SQLINTEGER  attribute , // Input
    SQLPOINTER  value_pointer , // Input
    SQLINTEGER  string_length , // Input
);

conn_handle

The connection handle

attribute

attribute identifies the attribute whose value you wish to set

value_pointer

A pointer to the value that the attribute will assume.

string_length

If attribute is defined by ODBC and value_pointer points to a binary buffer or character string, string_length is the length of value_pointer. If value_pointer points to a fixed-length value (such as an integer), string_length is ignored.

If EDB-ODBC defines the attribute, the application sets the string_length parameter. Possible string_length values are:

Value TypeMeaning
Character stringThe length of the character string or SQL_NTS
Binary bufferThe result of SQL_LEN_BINARY_ATTR(length)
Fixed length data typeSQL_IS_INTEGER or SQL_IS_UINTEGER
Any other typeSQL_IS_POINTER

SQLSetConnectAttr() returns SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR, SQL_STILL_EXECUTING or SQL_INVALID_HANDLE.

You can call SQLSetConnectAttr() any time after the connection handle is allocated, until the time that the connection is closed with a call to SQLFreeHandle(). All attributes set by the call persist until the call to SQLFreeHandle().

Connection attributes have a specific time frame in which they can be set. Some attributes must be set before the connection is established, while others can only be set after a connection is established.

The following table lists the connection attributes and the time frame in which they can be set:

AttributeSet Before or After establishing a connection?
SQL_ATTR_ACCESS_MODEBefore or After
SQL_ATTR_ASYNC_ENABLEBefore or After
SQL_ATTR_AUTO_IPDBefore or After
SQL_ATTR_AUTOCOMMITBefore or After
SQL_ATTR_CONNECTION_TIMEOUTBefore or After
SQL_ATTR_CURRENT_CATALOGBefore or After
SQL_ATTR_ENLIST_IN_DTCAfter
SQL_ATTR_ENLIST_IN_XAAfter
SQL_ATTR_LOGIN_TIMEOUTBefore
SQL_ATTR_ODBC_CURSORSBefore
SQL_ATTR_PACKET_SIZEBefore
SQL_ATTR_QUIET_MODEBefore or After
SQL_ATTR_TRACEBefore or After
SQL_ATTR_TRACEFILEBefore or After
SQL_ATTR_TRANSLATE_LIBAfter
SQL_ATTR_TRANSLATE_OPTIONAfter
SQL_ATTR_TXN_ISOLATIONBefore or After

Environment Attributes

You can use the ODBC SQLGetEnvAttr() and SQLSetEnvAttr() functions to retrieve or set the value of an environment attribute.

SQLGetEnvAttr()

Use the SQLGetEnvAttr() function to find the current value of environment attributes on your system. The signature of the function is:

SQLRETURN SQLGetConnectAttr
(
    SQLHDBC env_handle, // Input
    SQLINTEGER attribute, // Input
    SQLPOINTER value_ptr, // Output
    SQLINTEGER buffer_length, // Input
    SQLINTEGER * string_length_pointer // Output
);

env_handle

The environment handle.

attribute

attribute identifies the attribute whose value you wish to retrieve.

value_pointer

A pointer to the location in memory that will receive the attribute value.

buffer_length

If the attribute is a character string, buffer_length is the length of value_ptr. If the value of the attribute is not a character string, buffer_length is unused.

string_length_pointer

A pointer to a SQLINTEGER that receives the number of bytes available to return in value_pointer. If value_pointer is NULL, string_length_pointer is not returned.

This function returns SQL_SUCCESS, SQL_SUCCESS_WITH_INFO , SQL_NO_DATA, SQL_ERROR or SQL_INVALID_HANDLE.

The following table lists the environment attributes supported by EDB-ODBC.

AttributeSupported?Restrictions?
SQL_ATTR_CONNECTION_POOLINGSQL_CP_ONE_PER_DRIVER or SQL_CP_OFFDetermined by connection properties
SQL_ATTR_ODBC_VERSION(SQL_OV_ODBC3), (SQL_OV_ODBC2)NONE
SQL_ATTR_OUTPUT_NTSSQL_SUCCESSNONE

SQLSetEnvAttr()

You can use the SQLSetEnvAttr() function to set the values of environment attributes. The signature of the function is:

SQLRETURN SQLSetEnvAttr
(
    SQLHENV  env_handle , //Input
    SQLINTEGER  attribute , //Input
    SQLPOINTER  value_pointer , //Input
    SQLINTEGER  string_length  //Input
);
  • env_handle The environment handle.
  • attribute identifies the attribute whose value you wish to set.
  • value_pointer A pointer to the value assigned to the attribute.
  • The value will be a NULL terminated character string or a 32 bit integer value depending on the specified attribute.
  • string_length If value_pointer is a pointer to a binary buffer or character string,string\_length is the length of value_pointer. If the value being assigned to the attribute is a character, string_length is the length of that character string. If value_pointer is NULL, string_length is not returned. If value_pointer is an integer,string_lengthis ignored.

SQLSetEnvAttr() returns SQL_SUCCESS, SQL_INVALID_HANDLE, SQL_ERROR or SQL_SUCCESS_WITH_INFO. The application must call SQLSetEnvAttr() before allocating a connection handle; all values applied to environment attributes will persist until SQLFreeHandle() is called for the connection. ODBC version 3.x allows you to allocate multiple environment handles simultaneously.

The following table lists the environment attributes you can set with SQLSetAttr().

AttributeValue_pointer typeRestrictions?
SQL_ATTR_ODBC_VERSION32 bit IntegerSet this attribute before the application calls any function that includes an SQLHENV argument.
SQL_ATTR_OUTPUT_NTS32-bit IntegerDefaults to SQL_TRUE. Calls that set this attribute to SQL_FALSE return SQL_ERROR/SQLSTATEHYC00 (feature not implemented).

Statement Attributes

You can use the ODBC SQLGetStmtAttr() and SQLSetStmtAttr()functions to retrieve and set the value of a statement attribute.

SQLGetStmtAttr()

The SQLGetStmtAttr() function returns the current value of statement attribute. The signature is:

SQLRETURN SQLGetConnectAttr
(
    SQLHDBC  stmt_handle,  //Input
    SQLINTEGER  attribute,  //Input
    SQLPOINTER  value_ptr,  //Output
    SQLINTEGER  buffer_length,  //Input
    SQLINTEGER *  string_length_pointer  //Output
);
  • stmt_handle The statement handle

  • attribute is the attribute value

  • value_pointer A pointer to the location in memory that will receive the attribute value.

  • buffer_length If the attribute is defined by ODBC, buffer_length is the length of value_pointer (if value_pointer points to a character string or binary buffer). If value_pointer points to an integer, buffer_length is ignored.

    If EDB-ODBC defines the attribute, the application sets the buffer_length parameter. buffer_lengthcan be:

    Value TypeMeaning
    Character stringThe length of the character string
    Binary bufferThe result of SQL_LEN_BINARY_ATTR(length)
    Fixed length data typeSQL_IS_INTEGER or SQL_IS_UINTEGER
    Any other typeSQL_IS_POINTER
  • string_length_pointer A pointer to an SQLINTEGER that receives the number of bytes required to hold the requested value. If value_pointer is NULL, string_length_pointer is not returned.

    This function returns SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR or SQL_INVALID_HANDLE.

    AttributeSupported?Restrictions?
    SQL_ATTR_APP_PARAM_DESCYES
    SQL_ATTR_APP_ROW_DESCYES
    SQL_ATTR_ASYNC_ENABLENO
    SQL_ATTR_CONCURRENCYYESSQL_CONCUR_READ_ONLY
    SQL_ATTR_CURSOR_SCROLLABLEYES
    SQL_ATTR_CURSOR_TYPEYESSQL_CURSOR_FORWARD_ONLY
    SQL_ATTR_CURSOR_SENSITIVITYYESSQL_INSENSITIVE
    SQL_ATTR_ENABLE_AUTO_IPDNO
    SQL_ATTR_FETCH_BOOKMARK_PTRYES
    SQL_ATTR_IMP_PARAM_DESCYES
    SQL_ATTR_IMP_ROW_DESCYES
    SQL_ATTR_KEYSET_SIZENO
    SQL_ATTR_MAX_LENGTHNO
    SQL_ATTR_MAX_ROWSNO
    SQL_ATTR_METADATA_IDYES
    SQL_ATTR_NOSCANNO
    SQL_ATTR_PARAM_BIND_OFFSET_PTRYESODBC V2.0
    SQL_ATTR_PARAM_BIND_TYPEYES
    SQL_ATTR_PARAM_OPERATION_PTRYES
    SQL_ATTR_PARAM_STATUS_PTRYES
    SQL_ATTR_PARAMS_PROCESSED_PTRYES
    SQL_ATTR_PARAMSET_SIZEYES
    SQL_ATTR_QUERY_TIMEOUTNO
    SQL_ATTR_RETRIEVE_DATANO
    SQL_ATTR_ROW_BIND_OFFSET_PTRYES
    SQL_ATTR_ROW_BIND_TYPENO
    SQL_ATTR_ROW_NUMBERYES
    SQL_ATTR_ROW_OPERATION_PTRYES
    SQL_ATTR_ROW_STATUS_PTRYES
    SQL_ATTR_ROWS_FETCHED_PTRYES
    SQL_ATTR_ROW_ARRAY_SIZEYES
    SQL_ATTR_SIMULATE_CURSORNO
    SQL_ATTR_USE_BOOKMARKSYES
    SQL_ROWSET_SIZEYES

SQLSetStmtAttr()

You can use the SQLSetStmtAttr() function to set the values of environment attributes. The signature is:

SQLRETURN SQLSetStmtAttr
(
    SQLHENV  stmt_handle , //Input
    SQLINTEGER  attribute , //Input
    SQLPOINTER  value_pointer , //Input
    SQLINTEGER  string_length  //Input
);
  • stmt_handle is the environment handle.

  • attribute identifies the statement attribute whose value you wish to set.

  • value_pointer is a pointer to the location in memory that holds the value that will be assigned to the attribute. value_pointercan be a pointer to:

    • A null-terminated character string

    • A binary buffer

    • A value defined by the driver

    • A value of the type SQLLEN, SQLULEN or SQLUSMALLINT

      Value-pointer can also optionally hold one of the following values:

    • An ODBC descriptor handle

    • A SQLUINTEGER value

    • A SQLULEN value

    • A signed INTEGER (if attribute is a driver-specific value)

  • string_length If attribute is defined by ODBC and value_pointer points to a binary buffer or character string, string_length is the length of value_pointer. If value_pointer points to an integer, string_length is ignored. If EDB-ODBC defines the attribute, the application sets the string_length parameter. Possible string_length values are:

Value TypeMeaning
Character stringThe length of the character string or SQL_NTS
Binary bufferThe result of SQL_LEN_BINARY_ATTR(length)
Fixed length data typeSQL_IS_INTEGER or SQL_IS_UINTEGER
Any other typeSQL_IS_POINTER

Error Handling

Diagnostic information for the ODBC functions mentioned in this guide can be retrieved via the ODBC SQLGetDiagRec() function.

SQLGetDiagRec()

The SQLGetDiagRec() function returns status and error information from a diagnostic record written by the ODBC functions that retrieve or set attribute values. The signature is:

SQLRETURN SQLGetDiagRec
(
    SQLSMALLINT handle_type, // Input
    SQLHANDLE handle, // Input
    SQLSMALLINT record_number, // Input
    SQLCHAR *SQLState_pointer, // Output
    SQLINTEGER *native_error_pointer, // Output
    SQLCHAR *error_text_pointer, // Output
    SQLSMALLINT buffer_length, // Input
    SQLSMALLINT *text_length_pointer // Output
);
  • handle_type The handle type of the handle argument. handle_typemust be one of the following:

    • SQL_HANDLE_ENV specifies an environment handle.
    • SQL_HANDLE_STMT specifies a statement handle.
    • SQL_HANDLE_DBC specifies a connection handle.
    • SQL_HANDLE_DESC specifies a descriptor handle.
  • handle The handle associated with the attribute error message.

  • record_number The status record that the application is seeking information from (must be greater than or equal to 1).

  • SQLState_pointer Pointer to a memory buffer that receives the SQLState error code from the record.

  • native_error_pointer Pointer to a buffer that receives the native error message for the data source (contained in the SQL_DIAG_NATIVE field).

  • error_text_pointer Pointer to a memory buffer that receives the error text (contained in the SQL_DIAG_MESSAGE_TEXT field)

  • buffer_length The length of the error_text buffer.

  • text_length_pointer Pointer to the buffer that receives the size (in characters) of the error_text_pointer field. If the number of characters in the error_text_pointer parameter exceeds the number available (in buffer_length), error_text_pointer will be truncated.

SQLGetDiagRec() returns SQL_SUCCESS, SQL_ERROR, SQL_INVALID_HANDLE, SQL_SUCCESS_WITH_DATA or SQL_NO_DATA.

Supported ODBC API Functions

The following table lists the ODBC API functions; the right column specifies Yes if the API is supported by the EDB-ODBC driver. Use the ODBC SQLGetFunctions() function (specifying a function ID of SQL_API_ODBC3_ALL_FUNCTIONS) to return a current version of this list.

ODBC API Function NameSupported by EDB-ODBC?
SQLAllocConnect()Yes
SQLAllocEnv()Yes
SQLAllocStmt()Yes
SQLBindCol()Yes
SQLCancel()Yes
SQLColAttributes()Yes
SQLConnect()Yes
SQLDescribeCol()Yes
SQLDisconnect()Yes
SQLError()Yes
SQLExecDirect()Yes
SQLExecute()Yes
SQLFetch()Yes
SQLFreeConnect()Yes
SQLFreeEnv()Yes
SQLFreeStmt()Yes
SQLGetCursorName()Yes
SQLNumResultCols()Yes
SQLPrepare()Yes
SQLRowCount()Yes
SQLSetCursorName()Yes
SQLSetParam()Yes
SQLTransact()Yes
SQLColumns()Yes
SQLDriverConnect()Yes
SQLGetConnectOption()Yes
SQLGetData()Yes
SQLGetFunctions()Yes
SQLGetInfo()Yes
SQLGetStmtOption()Yes
SQLGetTypeInfo()Yes
SQLParamData()Yes
SQLPutData()Yes
SQLSetConnectOption()Yes
SQLSetStmtOption()Yes
SQLSpecialColumns()Yes
SQLStatistics()Yes
SQLTables()Yes
SQLBrowseConnect()No
SQLColumnPrivileges()No
SQLDataSources()Yes
SQLDescribeParam()No
SQLExtendedFetch()Yes
SQLForeignKeys()Yes
SQLMoreResults()Yes
SQLNativeSQL()Yes
SQLNumParams()Yes
SQLParamOptions()Yes
SQLPrimaryKeys()Yes
SQLProcedureColumns()Yes
SQLProcedures()Yes
SQLSetPos()Yes
SQLSetScrollOptions()No
SQLTablePrivileges()Yes
SQLDrivers()Yes
SQLBindParameter()Yes
SQLAllocHandle()Yes
SQLBindParam()Yes
SQLCloseCursor()Yes
SQLColAttribute()Yes
SQLCopyDesc()Yes
SQLendTran()Yes
SQLFetchScroll()Yes
SQLFreeHandle()Yes
SQLGetConnectAttr()Yes
SQLGetDescField()Yes
SQLGetDescRec()Yes
SQLGetDiagField()Yes
SQLGetDiagRec()Yes
SQLGetEnvAttr()Yes
SQLGetStmtAttr()Yes
SQLSetConnectAttr()Yes
SQLSetDescField()Yes
SQLSetDescRec()No
SQLSetEnvAttr()Yes
SQLSetStmtAttr()Yes
SQLBulkOperations()Yes

Supported Data Types

EDB-ODBC supports the following ODBC data types:

ODBC Data TypeCorresponding Advanced Server Data Type
SQL_BIGINTPG_TYPE_INT8
SQL_BINARYPG_TYPE_BYTEA
SQL_BITPG_TYPE_BOOL or PG_TYPE_CHAR
SQL_CHARPG_TYPE_BPCHAR
SQL_TYPE_DATEPG_TYPE_DATE
SQL_DECIMALPG_TYPE_NUMERIC
SQL_DOUBLEPG_TYPE_FLOAT8
SQL_FLOATPG_TYPE_FLOAT8
SQL_INTEGERPG_TYPE_INT4
SQL_LONGVARBINARYPG_TYPE_BYTEA
SQL_LONGVARCHARPG_TYPE_VARCHAR or PG_TYPE_TEXT
SQL_NUMERICPG_TYPE_NUMERIC
SQL_NUMERICPG_TYPE_NUMERIC
SQL_REALPG_TYPE_FLOAT4
SQL_SMALLINTPG_TYPE_INT2
SQL_TYPE_TIMEPG_TYPE_TIME
SQL_TYPE_TIMESTAMPPG_TYPE_DATETIME
SQL_TINYINTPG_TYPE_INT2
SQL_VARBINARYPG_TYPE_BYTEA
SQL_VARCHARPG_TYPE_VARCHAR

prerequisite for ADO users

You must execute Command.Prepared = True before executing Command.Execute.

Thread Safety

EDB-ODBC is thread safe.