Driver functionality v16

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 EDB Postgres 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 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 EDB Postgres 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 to 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 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 used only if the requested value is returned in the form of a character string.

  • string_length_pointer 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 isn't provided by SQLGetInfo().

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

  • SQLUINTEGER bitmask
  • SQLUINTEGER flag
  • SQLUINTEGER binary value
  • SQLUSMALLINT value
  • 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 EDB Postgres Advanced Server connection.

SQL info_type argument and description**EDB_ODBC/EDB Postgres 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 might 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 might 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's no specified limit to the number of connections allowed.
SQL_ACTIVE_ENVIRONMENTS: The number of active environments EDB-ODBC can support.Returns 0. There's 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's 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 aren't 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 isn't 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 can 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. Concatenating a NULL value and a non-NULL value results in a NULL value.
SQL_CONVERT_BIGINT: Indicates conversion support from the BIGINT type using the CONVERT function.Returns 0. The server doesn't support conversion.
SQL_CONVERT_BINARY: Indicates conversion support from the BINARY type using the CONVERT function.Returns 0. The server doesn't 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 doesn't support conversion.
SQL_CONVERT_DATE: Indicates conversion support from the DATE type using the CONVERT function.Returns 0. The server doesn't support conversion.
SQL_CONVERT_DECIMAL: Indicates conversion support from the DECIMAL type using the CONVERT function.Returns 0. The server doesn't support conversion.
SQL_CONVERT_DOUBLE: Indicates conversion support from the DOUBLE type using the CONVERT function.Returns 0. The server doesn't support conversion.
SQL_CONVERT_FLOAT: Indicates conversion support from the FLOAT type using the CONVERT function.Returns 0. The server doesn't 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 isn't currently supported.
SQL_CONVERT_INTERVAL_YEAR_MONTH: Indicates conversion support from the INTERVAL_YEAR_MONTH type using the CONVERT function.This info_type isn't currently supported.
SQL_CONVERT_LONGVARBINARY: Indicates conversion support for the LONG_VARBINARY type using the CONVERT function.Returns 0. The server doesn't support conversion.
SQL_CONVERT_LONGVARCHAR: Indicates conversion support for the LONGVARCHAR type using the CONVERT function.Returns 0. The server doesn't support conversion.
SQL_CONVERT_NUMERIC: Indicates conversion support for the NUMERIC type using the CONVERT function.Returns 0. The server doesn't support conversion.
SQL_CONVERT_REAL: Indicates conversion support for the REAL type using the CONVERT functionReturns 0. The server doesn't 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 doesn't support conversion.
SQL_CVT_TIMESTAMP: Indicates conversion support for TIMESTAMP type using the CONVERT function.Returns 0. The server doesn't 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 doesn't 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 doesn't 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 doesn't 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. Returns0. The server doesn't 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 isn't supported.
SQL_CREATE_CHARACTER_SET: Indicates support for the CREATE CHARACTER statement.Returns 0. The CREATE CHARACTER statement isn't supported.
SQL_CREATE_COLLATION: Indicates support for the CREATE COLLATION statement.Returns 0. The CREATE COLLATION statement isn't supported.
SQL_CREATE_DOMAIN: Indicates support for the CREATE DOMAIN statement.Returns 0. The CREATE DOMAIN statement isn't 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 isn't 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 isn't 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. Nonrepeatable or phantom reads are possible. Dirty reads aren't.
SQL_DESCRIBE_PARAMETER: Indicates support for the DESCRIBE INPUT statement.Returns N. The DESCRIBE INPUT statement isn't 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 isn't 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. EDB Postgres Advanced Server doesn't 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 can't 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 can't 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 can't 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. EDB Postgres Advanced Server supports multiple result sets.
SQL_MULTIPLE_ACTIVE_TXN: Indicates if the server supports multiple active transactions.Returns Y. EDB Postgres 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. EDB Postgres Advanced Server doesn't 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. EDB Postgres 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 level.Returns 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 isn't 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 doesn't 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 don't 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 returns 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. Returns SQL_PARC_NO_BATCH if a single, cumulative row count is available for the entire array.
SQL_PARAM_ARRAY_SELECTS: Indicates if the server returns one result set or a separate result set for each element in an array (or if the driver doesn't 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 might 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 CATALOG_NAME_SEPARATOR prev. SQL_QUALIFIER_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 might 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. Can 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 want to retrieve.

  • value_pointer A pointer to the location in memory to 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 isn't 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 Identifies the attribute whose value you want to set.

  • value_pointer A pointer to the value that the attribute assumes.

  • 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 shown in the table.

    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 timeframe in which they can be set. Some attributes must be set before the connection is established, while others can be set only 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 Identifies the attribute whose value you want to retrieve.

  • value_pointer A pointer to the location in memory to 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 isn't 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 isn't 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 want to set.
  • value_pointer A pointer to the value assigned to the attribute. The value is 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 isn't 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 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 a 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 The attribute value.

  • value_pointer A pointer to the location in memory to 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 isn't 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 The environment handle.

  • attribute Identifies the statement attribute whose value you want to set.

  • value_pointer A pointer to the location in memory that holds the value to assigned to the attribute. value_pointer can 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

You can retrieve diagnostic information for these ODBC functions mentioned by using 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_type must 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 is 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 EDB Postgres 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.