src/odbcn/dataschema

    Dark Mode
Search:
Group by:
  Source   Edit

Provides the typed schema with which data is received from or sent to ODBC drivers. This contains the implementation of all the overloads for bindParam, bindCol and getData procs. Importing this module is unneeded except for helping overload these procs. It is intended that overloading these procs can be done by wrapping them, because they cover the low-level schema with the ODBC drivers.

See inttests/tdataschema.nim for examples.

General documentation follow:

bindParam

This proc is used for binding parameters to a query, i.e. the arguments to exec.

Make a template in scope with the name bindParam and the signature:

template bindParam(stmt: SqlHandle, i: TSqlUSmallInt, param: ptr T)

The signature is prone to change, and may change from template to proc in the future. This routine must be a template, else the binding may not work. T is the type to overload. Then

  1. Convert T to a type supported by bindParams in this module
  2. Call bindParam(stmt, i, convertedVal)

getData

This proc is used for getting data from a row in a result set, e.g. next calls or using items(T) iterator.

Make a proc in scope with the name getData and the signature:

proc getData(stmt: SqlHandle, i: TSqlUSmallInt, ret: var T)

T is the type to overload. Then

  1. Declare a variable of a type that is supported by getDatas in this module
  2. Call getData(stmt, i, myVar)
  3. Convert myVar to T and assign to ret

bindCol

This proc is used for the bindCols proc. See documentation on that proc. It has more niche use, and overloading this proc will mean calling ODBC C API directly, because no transformation of retrieved values can occur. You know what you're doing if you're overloading this.

Types

OdbcArrayType = byte | char | Utf16Char
Valid element types for array and seq.   Source   Edit
OdbcFixedLenType = SomeNumber | bool | enum | GUID | OdbcDate | OdbcTime |
    OdbcTimestamp
Non-array types that are first-class citizens in ODBC's type system   Source   Edit
OdbcPrimType = enum
  otByteArray, otCharArray, otWideArray, otBool, otInt8, otInt16, otInt32,
  otInt64, otFloat32, otFloat64, otDate, otTime, otTimestamp, otGuid
All data types that this library supports to be retrieved from or sent to the ODBC C library. OdbcValue doesn't use all ordinal types here, but these are required to support user-defined structures.   Source   Edit
OdbcValue = object
  case kind*: OdbcPrimType
  of otByteArray:
    bytes*: seq[byte]
  of otCharArray:
    chars*: seq[char]
  of otWideArray:
    wchars*: seq[Utf16Char]
  of odbcIntKinds:
    i64*: int64
  of otFloat32:
    f32*: float32
  of otFloat64:
    f64*: float64
  of otDate:
    date*: OdbcDate
  of otTime:
    time*: OdbcTime
  of otTimestamp:
    datetime*: OdbcTimestamp
  of otGuid:
    guid*: GUID
  
  Source   Edit
ResizableContainer[T] = concept var x
    x[int] is var T
    x.setLen(int)
  Source   Edit

Consts

odbcIntKinds = {otBool..otInt64}
  Source   Edit

Procs

proc bindCol(stmt: SqlHandle; colIdx: TSqlUSmallInt; ret: var OdbcFixedLenType)
  Source   Edit
proc bindCol[I; T: OdbcArrayType](stmt: SqlHandle; colIdx: TSqlUSmallInt;
                                  ret: var array[I, T])
  Source   Edit
proc bindCol[T](stmt: SqlHandle; colIdx: TSqlUSmallInt; ret: var T)
  Source   Edit
proc bindParam(stmt: SqlHandle; idx: TSqlUSmallInt;
               param: ptr (OdbcFixedLenType and not SomeFloat))
  Source   Edit
proc bindParam(stmt: SqlHandle; idx: TSqlUSmallInt; param: ptr SomeFloat)
  Source   Edit
proc bindParam[I](stmt: SqlHandle; idx: TSqlUSmallInt;
                  param: ptr array[I, char | Utf16Char])
  Source   Edit
proc bindParam[I](stmt: SqlHandle; idx: TSqlUSmallInt; param: ptr array[I, byte])
  Source   Edit
proc bindParam[T](stmt: SqlHandle; idx: TSqlUSmallInt; param: ptr Option[T])
  Source   Edit
proc bindParam[T](stmt: SqlHandle; idx: TSqlUSmallInt; param: ptr T)
  Source   Edit
proc getData(ds: SqlHandle; colIdx: TSqlUSmallInt; ret: var OdbcFixedLenType) {.
    sideEffect, ...tags: [IOEffect].}
  Source   Edit
proc getData(ds: SqlHandle; colIdx: TSqlUSmallInt; ret: var OdbcValue) {.
    sideEffect, ...tags: [IOEffect], raises: [OdbcException].}
  Source   Edit
proc getData(ds: SqlHandle; colIdx: TSqlUSmallInt; ret: var string) {.
    sideEffect, ...tags: [IOEffect], raises: [OdbcException].}
  Source   Edit
proc getData[I; T: OdbcArrayType](ds: SqlHandle; colIdx: TSqlUSmallInt;
                                  ret: var array[I, T]) {.sideEffect,
    ...tags: [IOEffect].}
  Source   Edit
proc getData[T: OdbcArrayType](ds: SqlHandle; colIdx: TSqlUSmallInt;
                               ret: var openArray[T]) {.sideEffect,
    ...tags: [IOEffect].}
  Source   Edit
proc getData[T: OdbcFixedLenType](ds: SqlHandle; colIdx: TSqlUSmallInt;
                                  ret: var Option[T]) {.sideEffect,
    ...tags: [IOEffect].}
  Source   Edit
proc getData[T](ds: SqlHandle; colIdx: TSqlUSmallInt; ret: var seq[T]) {.
    sideEffect, ...tags: [IOEffect].}
  Source   Edit
proc getData[T](ds: SqlHandle; colIdx: TSqlUSmallInt; ret: var T) {.sideEffect,
    ...tags: [IOEffect].}
  Source   Edit
proc getDataResizable[T](ds: SqlHandle; colIdx: TSqlUSmallInt;
                         ret: var ResizableContainer[T]) {.sideEffect,
    ...tags: [IOEffect].}

getData into a resizable container, such as seq.

Reason for not making this an overload of getData is that it produces a lot of XDeclaredButNotUsed hints that I can't get rid of.

  Source   Edit

Templates

template bindParam(stmt: SqlHandle; idx: TSqlUSmallInt; param: openArray[char])
  Source   Edit
template bindParam(stmt: SqlHandle; idx: TSqlUSmallInt;
                   param: openArray[OdbcArrayType])
  Source   Edit

Exports

SQLGetEnvAttr, SQL_NO_DATA, SQL_SS_UDT, SQL_DIAG_DYNAMIC_FUNCTION, SQL_C_GUID, SQL_DIAG_SELECT_CURSOR, SQL_CATALOG_TERM, SQL_DESC_OCTET_LENGTH_PTR, SQL_INTERVAL_YEAR_TO_MONTH, SQL_DESC_MINIMUM_SCALE, SQL_ROWVER, SQLBrowseConnect, SQL_OV_ODBC2, SQL_TIME_LEN, SQLSpecialColumns, SQLDisconnect, SQL_STATIC_CURSOR_ATTRIBUTES1, SQL_BOOKMARK_PERSISTENCE, SQL_UNICODE_CHAR, SQL_COLUMN_ALIAS, SQL_DEFAULT, SQL_DRIVER_VER, SQL_C_SBIGINT, SQL_INTERVAL_HOUR, SQL_C_UTINYINT, SQL_DESC_LENGTH, SQLExtendedFetch, SQLTablePrivileges, SQL_MODE_READ_ONLY, SQL_DBMS_VER, OdbcTime, SQL_INFO_SCHEMA_VIEWS, SQL_SCCO_LOCK, SQL_ROW_ERROR, SQL_ATTR_TRANSLATE_OPTION, TSqlSmallInt, SQL_CATALOG_NAME, TSqlChar, SQL_ATTR_ODBC_VERSION, SQL_C_INTERVAL_HOUR_TO_MINUTE, SQLExecDirect, SQL_DATA_SOURCE_READ_ONLY, SQL_VARCHAR, SQL_XOPEN_CLI_YEAR, SQL_C_INTERVAL_YEAR_TO_MONTH, SQL_CA2_CRC_EXACT, SQL_SCOPE_SESSION, TSqlLen, SQLColAttribute, SQL_OPT_TRACE_ON, SQL_DIAG_UPDATE_WHERE, SQL_INDEX_HASHED, SQLColumns, SQL_DESC_DATA_PTR, SQL_DRIVER_NAME, SQL_CP_OFF, SQL_UPDATE, SQL_DIAG_MESSAGE_TEXT, SQL_DRIVER_HSTMT, SQL_C_INTERVAL_DAY, SQL_INTERVAL_MONTH, SqlHDesc, SQL_CONCUR_READ_ONLY, SQL_PACKET_SIZE, SQL_C_TINYINT, SQL_SS_DELETIONS, SQL_ATTR_LOGIN_TIMEOUT, ODBC_ADD_DSN, SQL_DRIVER_COMPLETE_REQUIRED, SQL_ATTR_MAX_LENGTH, OdbcTimestamp, SQL_ATTR_CONCURRENCY, SQL_DESC_LITERAL_PREFIX, SQL_RETRIEVE_DATA, SQL_ATTR_MAX_ROWS, SQL_DESC_UNSIGNED, SQL_TC_DML, SQL_INDEX_KEYWORDS, SQL_C_BOOKMARK, SQL_CODE_YEAR, SQL_NULL_HDESC, SQL_CODE_HOUR_TO_MINUTE, SQL_COLUMN_UNSIGNED, SQL_COLUMN_LENGTH, SQL_WCHAR, SQL_DIAG_DROP_INDEX, SQL_C_INTERVAL_HOUR, SQL_COLUMN_MONEY, SQL_FETCH_LAST, ODBC_ADD_SYS_DSN, SQL_TRANSACTION_CAPABLE, SQLDriverConnect, SQL_CONCUR_LOCK, SQL_COLATT_OPT_MAX, SQL_COLUMN_QUALIFIER_NAME, SQL_ATTR_IMP_PARAM_DESC, SQL_USER_NAME, SQL_LOCK_EXCLUSIVE, SQL_CA1_NEXT, SQL_COLUMN_TYPE_NAME, SQL_SIMULATE_CURSOR, SQL_CURSOR_STATIC, SQL_DESC_UPDATABLE, SQLMoreResults, SQL_FETCH_FIRST, SQL_INSENSITIVE, SQL_CODE_DAY_TO_HOUR, SQL_SS_ADDITIONS, SQL_ATTR_AUTO_IPD, SQL_DIAG_DROP_TABLE, SQL_LOCK_UNLOCK, SQL_DATETIME_LITERALS, SQL_SS_UPDATES, SQL_DIAG_INSERT, SQL_INDEX_OTHER, SQLNumParams, SQL_CURSOR_TYPE_DEFAULT, SQL_DIAG_SUBCLASS_ORIGIN, SQL_CA1_POS_REFRESH, SQL_TXN_READ_UNCOMMITTED, TSqlUInteger, SQL_DIAG_CREATE_INDEX, SQLPutData, SQL_C_CHAR, SQL_NEED_DATA, SQL_ATTR_CURSOR_SCROLLABLE, SQLEndTran, SQL_COMMIT, SQL_DESCRIBE_PARAMETER, SQL_IS_INTEGER, SQL_TYPE_TIMESTAMP, SQL_C_INTERVAL_YEAR, SQL_CODE_MINUTE, SQL_DESC_BIND_OFFSET_PTR, SQL_CURRENT_QUALIFIER, SQL_BP_UPDATE, SQLExecDirectW, SqlPointer, SQL_UB_ON, SQL_PARAM_INPUT, SQL_ATTR_TRACEFILE, SQL_DESC_LABEL, SQL_DESC_UNNAMED, SQL_NULL_HDBC, SQL_TRANSACTION_REPEATABLE_READ, SQL_ATTR_CONNECTION_POOLING, SQL_BIT, ODBC_REMOVE_DSN, SQL_DYNAMIC_CURSOR_ATTRIBUTES2, SQL_CA2_MAX_ROWS_INSERT, SQL_CA1_BULK_ADD, SQL_BATCH_ROW_COUNT, SQL_AUTOCOMMIT_DEFAULT, SQL_DESC_COUNT, SQL_KEYSET_CURSOR_ATTRIBUTES1, SQL_NO_NULLS, SQLSetCursorName, SQL_DESC_NAME, SQL_DESC_SCHEMA_NAME, SqlHWND, SQL_DIAG_CLASS_ORIGIN, SQL_UNICODE_VARCHAR, SQL_DESC_CONCISE_TYPE, SQL_CODE_DAY_TO_SECOND, SQL_CA1_POSITIONED_DELETE, SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES1, SQL_ATTR_TXN_ISOLATION, SQL_INDEX_CLUSTERED, SQLSetEnvAttr, SQL_DIAG_SERVER_NAME, SQL_NULL_HANDLE, SQLSetStmtAttr, SQL_AUTOCOMMIT_ON, SQL_C_INTERVAL_MONTH, SQL_C_SHORT, SQL_CA1_LOCK_NO_CHANGE, SQL_C_INTERVAL_DAY_TO_MINUTE, SQL_C_WCHAR, SQL_CODE_TIMESTAMP, SQL_C_INTERVAL_MINUTE, SQL_CURSOR_KEYSET_DRIVEN, SQL_LONGVARBINARY, SQL_CA2_SIMULATE_UNIQUE, SQL_ATTR_QUIET_MODE, SqlHDBC, SQL_TRANSACTION_SERIALIZABLE, SQL_CONCURRENCY, SQL_SCCO_OPT_VALUES, SQL_NO_TOTAL, SQL_MODE_DEFAULT, SQL_C_UBIGINT, TSqlInteger, SQL_HANDLE_STMT, SQL_STILL_EXECUTING, SQL_CA1_SELECT_FOR_UPDATE, SQL_TXN_ISOLATION, SQL_INVALID_HANDLE, SQL_ATTR_ROW_STATUS_PTR, SQLForeignKeys, TSqlUSmallInt, SQL_SIGNED_OFFSET, SQL_DRIVER_COMPLETE, SQL_LOGIN_TIMEOUT, SQL_C_DEFAULT, SQL_NULL_HSTMT, SQL_ALL_TYPES, SQL_FETCH_BY_BOOKMARK, SQL_CONCUR_DEFAULT, SQL_NULLABLE, SQL_DIAG_ALTER_TABLE, SQL_NULL_DATA, SQL_UNBIND, SQL_TRANSLATE_OPTION, SQL_ROW_ADDED, SQL_DATETIME, SQL_QUIET_MODE, SQLFetchScroll, SQL_ERROR, SQL_KEYSET_CURSOR_ATTRIBUTES2, SQL_UNSPECIFIED, SQL_CA2_MAX_ROWS_CATALOG, SQL_ROW_IDENTIFIER, SQL_CURSOR_SENSITIVITY, SQL_SO_MIXED, SQL_MAX_DSN_LENGTH, SQL_C_ULONG, SQL_TYPE_NULL, SQL_CA2_MAX_ROWS_DELETE, SQL_TC_NONE, SQL_SCCO_READ_ONLY, SQLPrepare, SQL_ATTR_PACKET_SIZE, SQL_ASYNC_MODE, SQL_CUR_USE_DRIVER, SQL_ODBC_CURSORS, SQL_DIAG_RETURNCODE, SQL_INTERVAL_MINUTE_TO_SECOND, SQL_C_DOUBLE, SQL_UB_DEFAULT, SQL_DESC_ARRAY_SIZE, SQL_DBMS_NAME, SQL_ROW_SUCCESS_WITH_INFO, SQL_ROW_PROCEED, SQL_INTERVAL_SECOND, SQL_RESET_PARAMS, OdbcDate, SQLDataSources, SQL_CA2_CRC_APPROXIMATE, SQL_CA2_MAX_ROWS_AFFECTS_ALL, SQL_VARBINARY, SQL_HANDLE_DESC, SQL_CA1_LOCK_EXCLUSIVE, SQL_C_STINYINT, SQL_ACTIVE_STATEMENTS, SQL_ATTR_OUTPUT_NTS, SQL_DESC_OCTET_LENGTH, SQL_COLUMN_TABLE_NAME, SQL_LONGVARCHAR, SQL_INTERVAL_DAY, SQL_TABLE_STAT, SQL_SO_KEYSET_DRIVEN, SQL_CODE_HOUR_TO_SECOND, SQL_FETCH_RELATIVE, SQL_CODE_MONTH, SQLGetDiagField, SQLTables, SQLGetDiagRec, SQL_ATTR_DISCONNECT_BEHAVIOR, SQL_BP_TRANSACTION, SQL_DRIVER_HDBC, SQL_MAX_ROWS, SQL_DESC_BIND_TYPE, SQLFreeStmt, SQL_DROP, SQL_DESC_NUM_PREC_RADIX, SQL_GUID, SQL_COLUMN_PRECISION, TSqlULen, SQL_DESC_DATETIME_INTERVAL_CODE, SQLConnect, SQL_CODE_DAY_TO_MINUTE, SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2, SQL_BP_SCROLL, SQL_ATTR_TRACE, SQL_NUMERIC, SQL_GET_BOOKMARK, SQL_NOSCAN, SQL_C_BINARY, SQL_FETCH_FIRST_USER, SQL_CUR_USE_IF_NEEDED, SQLColumnPrivileges, SQL_REAL, SQL_DIAG_UNKNOWN_STATEMENT, SQL_ATTR_IMP_ROW_DESC, SQL_TC_DDL_COMMIT, SQL_CA2_SIMULATE_TRY_UNIQUE, SQL_NULLABLE_UNKNOWN, SQL_DIAG_NUMBER, SQL_ROWSET_SIZE, SQL_TRANSACTION_ISOLATION_OPTION, SQL_POSITION, SQL_DESC_PRECISION, SQL_BP_DROP, SQL_DATABASE_NAME, SQL_CA2_READ_ONLY_CONCURRENCY, SQL_TC_DDL_IGNORE, SQL_MAXIMUM_IDENTIFIER_LENGTH, SQL_UPDATE_BY_BOOKMARK, SQL_COLUMN_NULLABLE, SQL_C_INTERVAL_DAY_TO_SECOND, SQL_ACTIVE_CONNECTIONS, SQL_INTERVAL_DAY_TO_HOUR, SQLProcedures, SQL_ATTR_USE_BOOKMARKS, SQL_SCOPE_CURROW, SQL_INTERVAL_HOUR_TO_MINUTE, SQL_DESC_DISPLAY_SIZE, SQL_ATTR_METADATA_ID, SQL_DECIMAL, SQL_DATE_LEN, SQL_CA1_POS_POSITION, SQL_SCCO_OPT_ROWVER, SQL_FETCH_FIRST_SYSTEM, SQL_BP_CLOSE, SQL_RESULT_COL, SQL_NTS, SQL_OV_ODBC3, SQL_COLLATION_SEQ, SQL_TIME, SQLNumResultCols, SQL_BP_DELETE, SQL_TIMESTAMP_LEN, TSqlWChar, SQL_C_TYPE_TIME, SQL_INDEX_ALL, SQL_DIAG_REVOKE, SQL_TYPE_DATE, SQL_DIAG_DELETE_WHERE, SQL_AUTOCOMMIT_OFF, SQLFreeHandle, SQL_ATTR_ACCESS_MODE, SQL_DIAG_CREATE_VIEW, SQL_OPT_TRACE, SQL_TXN_CAPABLE, SQL_CA1_RELATIVE, SQL_C_INTERVAL_SECOND, SQL_CURSOR_TYPE, SQL_CURSOR_FORWARD_ONLY, SQL_PARAM_OUTPUT, SQL_C_INTERVAL_DAY_TO_HOUR, SQL_C_TYPE_DATE, SQL_C_BIT, SQL_ARD_TYPE, SQL_TYPE_TIME, SQL_DYNAMIC_CURSOR_ATTRIBUTES1, SQL_DESC_ALLOC_TYPE, SQL_ROW_NUMBER, SQL_DOUBLE, SQL_DESC_BASE_TABLE_NAME, SQL_CODE_HOUR, SQL_CA1_POS_DELETE, SQL_FLOAT, SQL_CA1_LOCK_UNLOCK, SQL_DESC_TYPE_NAME, SQL_TINYINT, SQL_IS_UINTEGER, SQLBindCol, SQL_DATA_SOURCE_NAME, SQL_ATTR_TRANSLATE_LIB, SQL_C_VARBOOKMARK, SQL_FETCH_ABSOLUTE, SQL_CA1_POS_UPDATE, SQL_CA1_BULK_FETCH_BY_BOOKMARK, SQL_CP_ONE_PER_DRIVER, SQL_CODE_YEAR_TO_MONTH, SQL_SCROLL_OPTIONS, SQL_SCOPE_TRANSACTION, SQL_PARAM_INPUT_OUTPUT, SQL_INTERVAL_DAY_TO_MINUTE, SQL_DELETE_BY_BOOKMARK, SQL_DESC_TABLE_NAME, SQL_C_SLONG, SQLSetConnectAttr, SQL_CA2_SENSITIVITY_DELETIONS, SQL_DIAG_CONNECTION_NAME, SQL_CP_ONE_PER_HENV, SQL_ATTR_ENLIST_IN_DTC, SQL_WVARCHAR, SQL_SMALLINT, SqlHEnv, SQL_INDEX_UNIQUE, SQL_KEYSET_SIZE, SQL_CA1_ABSOLUTE, SQL_C_NUMERIC, SQL_TC_ALL, SQL_ATTR_APP_PARAM_DESC, SQL_DESC_SEARCHABLE, SQL_DESC_SCALE, SQL_ROW_NOROW, SQL_CURSOR_DYNAMIC, SQL_INTERVAL_MINUTE, SQLBindParameter, SQL_CODE_DAY, SQL_SO_STATIC, SQLGetInfo, SQL_OPT_TRACE_OFF, SQL_UNKNOWN_TYPE, SQL_C_DATE, SQL_DIAG_SQLSTATE, SQL_SERVER_NAME, SQL_TRANSLATE_DLL, SQL_UB_FIXED, SQL_ATTR_ODBC_CURSORS, SQL_ATTR_ROWS_FETCHED_PTR, SQL_CA2_SENSITIVITY_ADDITIONS, SQL_FETCH_NEXT, SQL_DRIVER_NOPROMPT, SQL_DIAG_ROW_COUNT, SQL_CA2_MAX_ROWS_SELECT, SQL_ROLLBACK, SQL_COLUMN_SCALE, SQL_ACTIVE_ENVIRONMENTS, SQL_INTEGER, SQLExecute, SQL_COLUMN_LABEL, SQL_DELETE, SQL_DESC_TYPE, SQL_TXN_ISOLATION_OPTION, SQL_USE_BOOKMARKS, ODBC_CONFIG_DSN, SQL_BIGINT, SQLCloseCursor, SQL_DIAG_DYNAMIC_DELETE_CURSOR, SQL_SO_FORWARD_ONLY, SQL_LOCK_NO_CHANGE, SQL_TXN_SERIALIZABLE, SQL_SCROLL_CONCURRENCY, SQL_CA2_LOCK_CONCURRENCY, SQL_ATTR_CURRENT_CATALOG, SQL_DESC_CATALOG_NAME, SQL_INTERVAL, SQLSetPos, SQLStatistics, SQL_ROW_UPDATED, SQL_COLUMN_CASE_SENSITIVE, SQL_CA2_MAX_ROWS_UPDATE, SQL_OJ_CAPABILITIES, SQL_UNSIGNED_OFFSET, SQL_NAME_LEN, SQL_INTERVAL_DAY_TO_SECOND, SQL_CA1_BULK_UPDATE_BY_BOOKMARK, SQL_DRIVER_HENV, SQL_ATTR_CONNECTION_DEAD, SQL_WLONGVARCHAR, SQL_DIAG_CREATE_TABLE, SQL_ATTR_FETCH_BOOKMARK_PTR, SQL_SETPOS_MAX_OPTION_VALUE, SQL_SUCCESS_WITH_INFO, SQL_FETCH_DIRECTION, SQLGetConnectAttr, SQL_NONSCROLLABLE, SQL_DESC_INDICATOR_PTR, SQL_ATTR_ROW_ARRAY_SIZE, SQL_OV_ODBC3_80, SQL_TXN_REPEATABLE_READ, SQL_ROW_SUCCESS, SQL_C_TYPE_TIMESTAMP, SQL_DIAG_GRANT, SQL_COLUMN_NAME, SQL_DESC_ARRAY_STATUS_PTR, SQL_TRUE, SQL_INTERVAL_HOUR_TO_SECOND, SQL_BINARY, SQL_QUERY_TIMEOUT, SQLGetCursorName, SQL_IS_POINTER, SQL_COLUMN_TYPE, SqlHandle, SQL_CA2_SENSITIVITY_UPDATES, SQL_INTERVAL_YEAR, SQL_DESC_LITERAL_SUFFIX, SQL_IS_USMALLINT, SQL_TXN_READ_COMMITTED, SQL_SCROLLABLE, SQL_ROW_IGNORE, SQL_TIMESTAMP, SQL_FETCH_PRIOR, SQL_PARAM_TYPE_UNKNOWN, SQL_C_LONG, SQL_HANDLE_DBC, SQL_UB_VARIABLE, SQL_ATTR_CURSOR_TYPE, SQL_BP_OTHER_HSTMT, SQL_NULL_HENV, SQL_CLOSE, SQL_CA1_BOOKMARK, SQL_C_INTERVAL_HOUR_TO_SECOND, SQL_TRANSACTION_READ_UNCOMMITTED, SQL_COLUMN_UPDATABLE, SQL_MAX_OPTION_STRING_LENGTH, SQL_SO_DYNAMIC, SQL_SS_TIME2, SQLRowCount, SQL_MAX_IDENTIFIER_LEN, SQL_CATALOG_NAME_SEPARATOR, SQL_MODE_READ_WRITE, ODBC_CONFIG_SYS_DSN, SQL_CONCUR_VALUES, SQL_FALSE, SQL_SUCCESS, SQL_CODE_TIME, SQL_ROW_DELETED, SQL_DRIVER_ODBC_VER, SQLDrivers, SQLFetch, SQL_UNICODE, SQL_ATTR_ROW_NUMBER, SQL_C_INTERVAL_MINUTE_TO_SECOND, SQL_ATTR_QUERY_TIMEOUT, SQL_DESC_AUTO_UNIQUE_VALUE, SQL_BIND_TYPE, SQL_ASYNC_ENABLE, SQL_DESC_BASE_COLUMN_NAME, SQL_COLUMN_OWNER_NAME, SQL_DESC_DATETIME_INTERVAL_PRECISION, SQL_MAX_MESSAGE_LENGTH, SQL_DIAG_DYNAMIC_UPDATE_CURSOR, SQL_DESC_CASE_SENSITIVE, SQL_DESC_LOCAL_TYPE_NAME, SQL_TRANSACTION_READ_COMMITTED, SQL_OUTER_JOIN_CAPABILITIES, SQL_COLUMN_DISPLAY_SIZE, SQL_AUTOCOMMIT, SQL_FETCH_BOOKMARK, SQL_STATIC_SENSITIVITY, SQL_DESC_ROWS_PROCESSED_PTR, SQL_CODE_SECOND, SQL_ATTR_CONNECTION_TIMEOUT, SQL_DIAG_DYNAMIC_FUNCTION_CODE, SQL_SQL_CONFORMANCE, SQL_ENSURE, SQL_STATIC_CURSOR_ATTRIBUTES2, SQL_CA1_BULK_DELETE_BY_BOOKMARK, SQLGetData, SQL_ATTR_CURSOR_SENSITIVITY, SQL_OPT_TRACEFILE, SqlHStmt, SQL_CODE_MINUTE_TO_SECOND, SQL_COLUMN_AUTO_INCREMENT, SQL_COLUMN_DRIVER_START, SQL_DESC_PARAMETER_TYPE, SQL_C_TIMESTAMP, SQL_UNICODE_LONGVARCHAR, SQL_CA2_OPT_VALUES_CONCURRENCY, SQL_API_SQLDESCRIBEPARAM, SQL_CA1_POSITIONED_UPDATE, SQL_CATALOG_LOCATION, SQLGetStmtAttr, SQL_C_TIME, SQLPrepareW, SQL_CATALOG_USAGE, SQL_C_FLOAT, SQLBulkOperations, SQL_DESC_MAXIMUM_SCALE, SQLPrimaryKeys, SQL_ATTR_APP_ROW_DESC, SQL_BATCH_SUPPORT, SQL_QUICK, SQL_UB_OFF, SQL_DATE, SQL_ADD, SQL_MAX_LENGTH, SQL_CODE_DATE, SQL_DESC_NULLABLE, SQL_RETURN_VALUE, SQL_REFRESH, SQL_ATTR_ENLIST_IN_XA, SQL_CA2_OPT_ROWVER_CONCURRENCY, SQL_IS_SMALLINT, SQL_DATA_AT_EXEC, SQL_C_SSHORT, ODBC_REMOVE_SYS_DSN, SQL_CHAR, SQL_CONCUR_ROWVER, SQLAllocHandle, SQL_ODBC_VER, SQL_DIAG_NATIVE, SQL_SS_XML, SQL_DESC_FIXED_PREC_SCALE, SQL_ATTR_AUTOCOMMIT, SQL_ACCESS_MODE, SQL_DRIVER_PROMPT, SQL_SS_TIMESTAMPOFFSET, SQL_BEST_ROWID, SQL_CUR_USE_ODBC, SQL_C_USHORT, SQL_HANDLE_ENV, SQL_CA2_SIMULATE_NON_UNIQUE, SQL_DIAG_DROP_VIEW, SQL_COLUMN_COUNT, SQL_SENSITIVE, SQL_COLUMN_SEARCHABLE, SQLProcedureColumns, SQL_CUR_DEFAULT, SQLDescribeCol