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
- Convert T to a type supported by bindParams in this module
- 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
- Declare a variable of a type that is supported by getDatas in this module
- Call getData(stmt, i, myVar)
- 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