{ +-------------------------------------------------------------+ } { | | } { | GM-Software | } { | =========== | } { | | } { | Project: DB Projects | } { | | } { | Description: ODBC call level API. | } { | | } { | | } { | Copyright (C) - 1998 - Gerrit Moeller. | } { | | } { | Source code distributed under MIT license. | } { | | } { | See: https://www.gm-software.de | } { | | } { +-------------------------------------------------------------+ } {$INCLUDE GMCompilerSettings.inc} // // 64 Bit changes: https://docs.microsoft.com/de-de/sql/odbc/reference/odbc-64-bit-information?view=sql-server-2017 // {$MACRO ON} {$DEFINE ODBCVER := $0300} // <- Assume ODBC Version 3.00 { $IFDEF FPC} { $PACKRECORDS C} { $ENDIF} unit GMOdbcAPI; interface uses GMStrDef, GMIntf, GMCommon, GMSql; const {$EXTERNALSYM SQL_FALSE} SQL_FALSE = 0; {$EXTERNALSYM SQL_TRUE} SQL_TRUE = 1; {$EXTERNALSYM SQL_NULL_DATA} SQL_NULL_DATA = -1; {$EXTERNALSYM SQL_DATA_AT_EXEC} SQL_DATA_AT_EXEC = -2; {$EXTERNALSYM SQL_NO_TOTAL} SQL_NO_TOTAL = -4; {$EXTERNALSYM SQL_IGNORE} SQL_IGNORE = -6; {$EXTERNALSYM SQL_COLUMN_IGNORE} SQL_COLUMN_IGNORE = SQL_IGNORE; {$EXTERNALSYM SQL_OV_ODBC2} SQL_OV_ODBC2 = $00000002; {$EXTERNALSYM SQL_OV_ODBC3} SQL_OV_ODBC3 = $00000003; {$EXTERNALSYM SQL_OIC_CORE} SQL_OIC_CORE = 1; {$EXTERNALSYM SQL_OIC_LEVEL1} SQL_OIC_LEVEL1 = 2; {$EXTERNALSYM SQL_OIC_LEVEL2} SQL_OIC_LEVEL2 = 3; {$EXTERNALSYM SQL_ATTR_ANSI_APP} SQL_ATTR_ANSI_APP = 115; {$EXTERNALSYM SQL_AA_TRUE} SQL_AA_TRUE = 1; {$EXTERNALSYM SQL_AA_FALSE} SQL_AA_FALSE = 0; {$EXTERNALSYM SQL_ATTR_ODBC_VERSION} SQL_ATTR_ODBC_VERSION = 200; {$EXTERNALSYM SQL_ATTR_CONNECTION_POOLING} SQL_ATTR_CONNECTION_POOLING = 201; {$EXTERNALSYM SQL_ATTR_CP_MATCH} SQL_ATTR_CP_MATCH = 202; {$EXTERNALSYM SQL_SUCCESS} SQL_SUCCESS = 0; {$EXTERNALSYM SQL_SUCCESS_WITH_INFO} SQL_SUCCESS_WITH_INFO = 1; {$EXTERNALSYM SQL_NO_DATA} SQL_NO_DATA = 100; {$EXTERNALSYM SQL_ERROR} SQL_ERROR = -1; {$EXTERNALSYM SQL_INVALID_HANDLE} SQL_INVALID_HANDLE = -2; {$EXTERNALSYM SQL_STILL_EXECUTING} SQL_STILL_EXECUTING = 2; {$EXTERNALSYM SQL_NEED_DATA} SQL_NEED_DATA = 99; {$EXTERNALSYM SQL_NTS} SQL_NTS = -3; {$EXTERNALSYM SQL_NTSL} SQL_NTSL = $FFFFFFFD; {$EXTERNALSYM SQL_MAX_MESSAGE_LENGTH} SQL_MAX_MESSAGE_LENGTH = 512; {$EXTERNALSYM SQL_DATE_LEN} SQL_DATE_LEN = 10; {$EXTERNALSYM SQL_TIME_LEN} SQL_TIME_LEN = 8; {$EXTERNALSYM SQL_TIMESTAMP_LEN} SQL_TIMESTAMP_LEN = 19; {$EXTERNALSYM SQL_HANDLE_ENV} SQL_HANDLE_ENV = 1; {$EXTERNALSYM SQL_HANDLE_DBC} SQL_HANDLE_DBC = 2; {$EXTERNALSYM SQL_HANDLE_STMT} SQL_HANDLE_STMT = 3; {$EXTERNALSYM SQL_HANDLE_DESC} SQL_HANDLE_DESC = 4; {$EXTERNALSYM SQL_ATTR_OUTPUT_NTS} SQL_ATTR_OUTPUT_NTS = 10001; {$EXTERNALSYM SQL_ATTR_AUTO_IPD} SQL_ATTR_AUTO_IPD = 10001; {$EXTERNALSYM SQL_ATTR_METADATA_ID} SQL_ATTR_METADATA_ID = 10014; {$EXTERNALSYM SQL_ATTR_APP_ROW_DESC} SQL_ATTR_APP_ROW_DESC = 10010; {$EXTERNALSYM SQL_ATTR_APP_PARAM_DESC} SQL_ATTR_APP_PARAM_DESC = 10011; {$EXTERNALSYM SQL_ATTR_IMP_ROW_DESC} SQL_ATTR_IMP_ROW_DESC = 10012; {$EXTERNALSYM SQL_ATTR_IMP_PARAM_DESC} SQL_ATTR_IMP_PARAM_DESC = 10013; {$EXTERNALSYM SQL_ATTR_CURSOR_SCROLLABLE} SQL_ATTR_CURSOR_SCROLLABLE = -1; {$EXTERNALSYM SQL_ATTR_CURSOR_SENSITIVITY} SQL_ATTR_CURSOR_SENSITIVITY = -2; {$EXTERNALSYM SQL_METADATA_ID_DEFAULT} SQL_METADATA_ID_DEFAULT = SQL_FALSE; {$EXTERNALSYM SQL_OUTPUT_NTS_DEFAULT} SQL_OUTPUT_NTS_DEFAULT = SQL_TRUE; {$EXTERNALSYM SQL_NONSCROLLABLE} SQL_NONSCROLLABLE = 0; {$EXTERNALSYM SQL_SCROLLABLE} SQL_SCROLLABLE = 1; {$EXTERNALSYM SQL_SCROLLABLE_DEFAULT} SQL_SCROLLABLE_DEFAULT = SQL_NONSCROLLABLE; {$EXTERNALSYM SQL_DIAG_RETURNCODE} SQL_DIAG_RETURNCODE = 1; {$EXTERNALSYM SQL_DIAG_NUMBER} SQL_DIAG_NUMBER = 2; {$EXTERNALSYM SQL_DIAG_ROW_COUNT} SQL_DIAG_ROW_COUNT = 3; {$EXTERNALSYM SQL_DIAG_SQLSTATE} SQL_DIAG_SQLSTATE = 4; {$EXTERNALSYM SQL_DIAG_NATIVE} SQL_DIAG_NATIVE = 5; {$EXTERNALSYM SQL_DIAG_MESSAGE_TEXT} SQL_DIAG_MESSAGE_TEXT = 6; {$EXTERNALSYM SQL_DIAG_DYNAMIC_FUNCTION} SQL_DIAG_DYNAMIC_FUNCTION = 7; {$EXTERNALSYM SQL_DIAG_CLASS_ORIGIN} SQL_DIAG_CLASS_ORIGIN = 8; {$EXTERNALSYM SQL_DIAG_SUBCLASS_ORIGIN} SQL_DIAG_SUBCLASS_ORIGIN = 9; {$EXTERNALSYM SQL_DIAG_CONNECTION_NAME} SQL_DIAG_CONNECTION_NAME = 10; {$EXTERNALSYM SQL_DIAG_SERVER_NAME} SQL_DIAG_SERVER_NAME = 11; {$EXTERNALSYM SQL_DIAG_DYNAMIC_FUNCTION_CODE} SQL_DIAG_DYNAMIC_FUNCTION_CODE = 12; {$EXTERNALSYM SQL_DIAG_ALTER_TABLE} SQL_DIAG_ALTER_TABLE = 4; {$EXTERNALSYM SQL_DIAG_CREATE_INDEX} SQL_DIAG_CREATE_INDEX = -1; {$EXTERNALSYM SQL_DIAG_CREATE_TABLE} SQL_DIAG_CREATE_TABLE = 77; {$EXTERNALSYM SQL_DIAG_CREATE_VIEW} SQL_DIAG_CREATE_VIEW = 84; {$EXTERNALSYM SQL_DIAG_DELETE_WHERE} SQL_DIAG_DELETE_WHERE = 19; {$EXTERNALSYM SQL_DIAG_DROP_INDEX} SQL_DIAG_DROP_INDEX = -2; {$EXTERNALSYM SQL_DIAG_DROP_TABLE} SQL_DIAG_DROP_TABLE = 32; {$EXTERNALSYM SQL_DIAG_DROP_VIEW} SQL_DIAG_DROP_VIEW = 36; {$EXTERNALSYM SQL_DIAG_DYNAMIC_DELETE_CURSOR} SQL_DIAG_DYNAMIC_DELETE_CURSOR = 38; {$EXTERNALSYM SQL_DIAG_DYNAMIC_UPDATE_CURSOR} SQL_DIAG_DYNAMIC_UPDATE_CURSOR = 81; {$EXTERNALSYM SQL_DIAG_GRANT} SQL_DIAG_GRANT = 48; {$EXTERNALSYM SQL_DIAG_INSERT} SQL_DIAG_INSERT = 50; {$EXTERNALSYM SQL_DIAG_REVOKE} SQL_DIAG_REVOKE = 59; {$EXTERNALSYM SQL_DIAG_SELECT_CURSOR} SQL_DIAG_SELECT_CURSOR = 85; {$EXTERNALSYM SQL_DIAG_UNKNOWN_STATEMENT} SQL_DIAG_UNKNOWN_STATEMENT = 0; {$EXTERNALSYM SQL_DIAG_UPDATE_WHERE} SQL_DIAG_UPDATE_WHERE = 82; {$EXTERNALSYM SQL_INTERVAL_BASE} SQL_INTERVAL_BASE = 100; {$EXTERNALSYM SQL_CODE_YEAR} SQL_CODE_YEAR = 1; {$EXTERNALSYM SQL_CODE_MONTH} SQL_CODE_MONTH = 2; {$EXTERNALSYM SQL_CODE_DAY} SQL_CODE_DAY = 3; {$EXTERNALSYM SQL_CODE_HOUR} SQL_CODE_HOUR = 4; {$EXTERNALSYM SQL_CODE_MINUTE} SQL_CODE_MINUTE = 5; {$EXTERNALSYM SQL_CODE_SECOND} SQL_CODE_SECOND = 6; {$EXTERNALSYM SQL_CODE_YEAR_TO_MONTH} SQL_CODE_YEAR_TO_MONTH = 7; {$EXTERNALSYM SQL_CODE_DAY_TO_HOUR} SQL_CODE_DAY_TO_HOUR = 8; {$EXTERNALSYM SQL_CODE_DAY_TO_MINUTE} SQL_CODE_DAY_TO_MINUTE = 9; {$EXTERNALSYM SQL_CODE_DAY_TO_SECOND} SQL_CODE_DAY_TO_SECOND = 10; {$EXTERNALSYM SQL_CODE_HOUR_TO_MINUTE} SQL_CODE_HOUR_TO_MINUTE = 11; {$EXTERNALSYM SQL_CODE_HOUR_TO_SECOND} SQL_CODE_HOUR_TO_SECOND = 12; {$EXTERNALSYM SQL_CODE_MINUTE_TO_SECOND} SQL_CODE_MINUTE_TO_SECOND = 13; {$EXTERNALSYM SQL_INTERVAL_YEAR} SQL_INTERVAL_YEAR = SQL_INTERVAL_BASE + SQL_CODE_YEAR; {$EXTERNALSYM SQL_INTERVAL_MONTH} SQL_INTERVAL_MONTH = SQL_INTERVAL_BASE + SQL_CODE_MONTH; {$EXTERNALSYM SQL_INTERVAL_DAY} SQL_INTERVAL_DAY = SQL_INTERVAL_BASE + SQL_CODE_DAY; {$EXTERNALSYM SQL_INTERVAL_HOUR} SQL_INTERVAL_HOUR = SQL_INTERVAL_BASE + SQL_CODE_HOUR; {$EXTERNALSYM SQL_INTERVAL_MINUTE} SQL_INTERVAL_MINUTE = SQL_INTERVAL_BASE + SQL_CODE_MINUTE; {$EXTERNALSYM SQL_INTERVAL_SECOND} SQL_INTERVAL_SECOND = SQL_INTERVAL_BASE + SQL_CODE_SECOND; {$EXTERNALSYM SQL_INTERVAL_YEAR_TO_MONTH} SQL_INTERVAL_YEAR_TO_MONTH = SQL_INTERVAL_BASE + SQL_CODE_YEAR_TO_MONTH; {$EXTERNALSYM SQL_INTERVAL_DAY_TO_HOUR} SQL_INTERVAL_DAY_TO_HOUR = SQL_INTERVAL_BASE + SQL_CODE_DAY_TO_HOUR; {$EXTERNALSYM SQL_INTERVAL_DAY_TO_MINUTE} SQL_INTERVAL_DAY_TO_MINUTE = SQL_INTERVAL_BASE + SQL_CODE_DAY_TO_MINUTE; {$EXTERNALSYM SQL_INTERVAL_DAY_TO_SECOND} SQL_INTERVAL_DAY_TO_SECOND = SQL_INTERVAL_BASE + SQL_CODE_DAY_TO_SECOND; {$EXTERNALSYM SQL_INTERVAL_HOUR_TO_MINUTE} SQL_INTERVAL_HOUR_TO_MINUTE = SQL_INTERVAL_BASE + SQL_CODE_HOUR_TO_MINUTE; {$EXTERNALSYM SQL_INTERVAL_HOUR_TO_SECOND} SQL_INTERVAL_HOUR_TO_SECOND = SQL_INTERVAL_BASE + SQL_CODE_HOUR_TO_SECOND; {$EXTERNALSYM SQL_INTERVAL_MINUTE_TO_SECOND} SQL_INTERVAL_MINUTE_TO_SECOND = SQL_INTERVAL_BASE + SQL_CODE_MINUTE_TO_SECOND; {$EXTERNALSYM SQL_UNKNOWN_TYPE} SQL_UNKNOWN_TYPE = 0; {$EXTERNALSYM SQL_CHAR} SQL_CHAR = 1; {$EXTERNALSYM SQL_NUMERIC} SQL_NUMERIC = 2; {$EXTERNALSYM SQL_DECIMAL} SQL_DECIMAL = 3; {$EXTERNALSYM SQL_INTEGER} SQL_INTEGER = 4; {$EXTERNALSYM SQL_SMALLINT} SQL_SMALLINT = 5; {$EXTERNALSYM SQL_FLOAT} SQL_FLOAT = 6; {$EXTERNALSYM SQL_REAL} SQL_REAL = 7; {$EXTERNALSYM SQL_DOUBLE} SQL_DOUBLE = 8; {$EXTERNALSYM SQL_DATE} SQL_DATE = 9; {$EXTERNALSYM SQL_INTERVAL} SQL_INTERVAL = 10; {$EXTERNALSYM SQL_TIME} SQL_TIME = 10; {$EXTERNALSYM SQL_TIMESTAMP} SQL_TIMESTAMP = 11; {$EXTERNALSYM SQL_VARCHAR} SQL_VARCHAR = 12; {$EXTERNALSYM SQL_TYPE_DATE} SQL_TYPE_DATE = 91; {$EXTERNALSYM SQL_TYPE_TIME} SQL_TYPE_TIME = 92; {$EXTERNALSYM SQL_TYPE_TIMESTAMP} SQL_TYPE_TIMESTAMP = 93; {$EXTERNALSYM SQL_LONGVARCHAR} SQL_LONGVARCHAR = -1; {$EXTERNALSYM SQL_BINARY} SQL_BINARY = -2; {$EXTERNALSYM SQL_VARBINARY} SQL_VARBINARY = -3; {$EXTERNALSYM SQL_LONGVARBINARY} SQL_LONGVARBINARY = -4; {$EXTERNALSYM SQL_BIGINT} SQL_BIGINT = -5; {$EXTERNALSYM SQL_TINYINT} SQL_TINYINT = -6; {$EXTERNALSYM SQL_BIT} SQL_BIT = -7; {$EXTERNALSYM SQL_WCHAR} SQL_WCHAR = -8; {$EXTERNALSYM SQL_WVARCHAR} SQL_WVARCHAR = -9; {$EXTERNALSYM SQL_WLONGVARCHAR} SQL_WLONGVARCHAR = -10; {$EXTERNALSYM SQL_GUID} SQL_GUID = -11; {$EXTERNALSYM SQL_SIGNED_OFFSET} SQL_SIGNED_OFFSET = -20; {$EXTERNALSYM SQL_UNSIGNED_OFFSET} SQL_UNSIGNED_OFFSET = -22; SQL_SS_TIME2 = -154; {$EXTERNALSYM SQL_C_DEFAULT} SQL_C_DEFAULT = 99; {$EXTERNALSYM SQL_C_CHAR} SQL_C_CHAR = SQL_CHAR; {$EXTERNALSYM SQL_C_WCHAR} SQL_C_WCHAR = SQL_WCHAR; {$EXTERNALSYM SQL_C_LONG} SQL_C_LONG = SQL_INTEGER; {$EXTERNALSYM SQL_C_SHORT} SQL_C_SHORT = SQL_SMALLINT; {$EXTERNALSYM SQL_C_FLOAT} SQL_C_FLOAT = SQL_REAL; {$EXTERNALSYM SQL_C_DOUBLE} SQL_C_DOUBLE = SQL_DOUBLE; {$EXTERNALSYM SQL_C_NUMERIC} SQL_C_NUMERIC = SQL_NUMERIC; {$EXTERNALSYM SQL_C_DATE} SQL_C_DATE = SQL_DATE; {$EXTERNALSYM SQL_C_TIME} SQL_C_TIME = SQL_TIME; {$EXTERNALSYM SQL_C_TIMESTAMP} SQL_C_TIMESTAMP = SQL_TIMESTAMP; {$EXTERNALSYM SQL_C_TYPE_DATE} SQL_C_TYPE_DATE = SQL_TYPE_DATE; {$EXTERNALSYM SQL_C_TYPE_TIME} SQL_C_TYPE_TIME = SQL_TYPE_TIME; {$EXTERNALSYM SQL_C_TYPE_TIMESTAMP} SQL_C_TYPE_TIMESTAMP = SQL_TYPE_TIMESTAMP; {$EXTERNALSYM SQL_C_INTERVAL_YEAR} SQL_C_INTERVAL_YEAR = SQL_INTERVAL_YEAR; {$EXTERNALSYM SQL_C_INTERVAL_MONTH} SQL_C_INTERVAL_MONTH = SQL_INTERVAL_MONTH; {$EXTERNALSYM SQL_C_INTERVAL_DAY} SQL_C_INTERVAL_DAY = SQL_INTERVAL_DAY; {$EXTERNALSYM SQL_C_INTERVAL_HOUR} SQL_C_INTERVAL_HOUR = SQL_INTERVAL_HOUR; {$EXTERNALSYM SQL_C_INTERVAL_MINUTE} SQL_C_INTERVAL_MINUTE = SQL_INTERVAL_MINUTE; {$EXTERNALSYM SQL_C_INTERVAL_SECOND} SQL_C_INTERVAL_SECOND = SQL_INTERVAL_SECOND; {$EXTERNALSYM SQL_C_INTERVAL_YEAR_TO_MONTH} SQL_C_INTERVAL_YEAR_TO_MONTH = SQL_INTERVAL_YEAR_TO_MONTH; {$EXTERNALSYM SQL_C_INTERVAL_DAY_TO_HOUR} SQL_C_INTERVAL_DAY_TO_HOUR = SQL_INTERVAL_DAY_TO_HOUR; {$EXTERNALSYM SQL_C_INTERVAL_DAY_TO_MINUTE} SQL_C_INTERVAL_DAY_TO_MINUTE = SQL_INTERVAL_DAY_TO_MINUTE; {$EXTERNALSYM SQL_C_INTERVAL_DAY_TO_SECOND} SQL_C_INTERVAL_DAY_TO_SECOND = SQL_INTERVAL_DAY_TO_SECOND; {$EXTERNALSYM SQL_C_INTERVAL_HOUR_TO_MINUTE} SQL_C_INTERVAL_HOUR_TO_MINUTE = SQL_INTERVAL_HOUR_TO_MINUTE; {$EXTERNALSYM SQL_C_INTERVAL_HOUR_TO_SECOND} SQL_C_INTERVAL_HOUR_TO_SECOND = SQL_INTERVAL_HOUR_TO_SECOND; {$EXTERNALSYM SQL_C_INTERVAL_MINUTE_TO_SECOND} SQL_C_INTERVAL_MINUTE_TO_SECOND = SQL_INTERVAL_MINUTE_TO_SECOND; {$EXTERNALSYM SQL_C_BINARY} SQL_C_BINARY = SQL_BINARY; {$EXTERNALSYM SQL_C_BIT} SQL_C_BIT = SQL_BIT; {$EXTERNALSYM SQL_C_BIGINT} SQL_C_BIGINT = SQL_BIGINT; {$EXTERNALSYM SQL_C_SBIGINT} SQL_C_SBIGINT = SQL_BIGINT + SQL_SIGNED_OFFSET; {$EXTERNALSYM SQL_C_UBIGINT} SQL_C_UBIGINT = SQL_BIGINT + SQL_UNSIGNED_OFFSET; {$EXTERNALSYM SQL_C_TINYINT} SQL_C_TINYINT = SQL_TINYINT; {$EXTERNALSYM SQL_C_SLONG} SQL_C_SLONG = SQL_C_LONG + SQL_SIGNED_OFFSET; {$EXTERNALSYM SQL_C_SSHORT} SQL_C_SSHORT = SQL_C_SHORT + SQL_SIGNED_OFFSET; {$EXTERNALSYM SQL_C_STINYINT} SQL_C_STINYINT = SQL_TINYINT + SQL_SIGNED_OFFSET; {$EXTERNALSYM SQL_C_ULONG} SQL_C_ULONG = SQL_C_LONG + SQL_UNSIGNED_OFFSET; {$EXTERNALSYM SQL_C_USHORT} SQL_C_USHORT = SQL_C_SHORT + SQL_UNSIGNED_OFFSET; {$EXTERNALSYM SQL_C_UTINYINT} SQL_C_UTINYINT = SQL_TINYINT + SQL_UNSIGNED_OFFSET; {$EXTERNALSYM SQL_C_GUID} SQL_C_GUID = SQL_GUID; {$EXTERNALSYM SQL_C_VARBOOKMARK} SQL_C_VARBOOKMARK = SQL_C_BINARY; // Extended C Types range 4000 and above. Range of -100 thru 200 is reserved by Driver Manager. SQL_C_TYPES_EXTENDED = $04000; SQL_C_SS_TIME2 = SQL_C_TYPES_EXTENDED + 0; SQL_C_SS_TIMESTAMPOFFSET = SQL_C_TYPES_EXTENDED + 1; {$IFDEF CPU64} {$EXTERNALSYM SQL_C_BOOKMARK} SQL_C_BOOKMARK = SQL_C_UBIGINT; {$ELSE} {$EXTERNALSYM SQL_C_BOOKMARK} SQL_C_BOOKMARK = SQL_C_ULONG; {$ENDIF} {$EXTERNALSYM SQL_UNSPECIFIED} SQL_UNSPECIFIED = 0; {$EXTERNALSYM SQL_INSENSITIVE} SQL_INSENSITIVE = 1; {$EXTERNALSYM SQL_SENSITIVE} SQL_SENSITIVE = 2; {$EXTERNALSYM SQL_CURSOR_SENSITIVITY_DEFAULT} SQL_CURSOR_SENSITIVITY_DEFAULT = SQL_UNSPECIFIED; {$EXTERNALSYM SQL_ALL_TYPES} SQL_ALL_TYPES = 0; {$EXTERNALSYM SQL_DEFAULT} SQL_DEFAULT = 99; {$EXTERNALSYM SQL_ARD_TYPE} SQL_ARD_TYPE = -99; {$EXTERNALSYM SQL_CODE_DATE} SQL_CODE_DATE = 1; {$EXTERNALSYM SQL_CODE_TIME} SQL_CODE_TIME = 2; {$EXTERNALSYM SQL_CODE_TIMESTAMP} SQL_CODE_TIMESTAMP = 3; {$EXTERNALSYM SQL_NO_NULLS} SQL_NO_NULLS = 0; {$EXTERNALSYM SQL_NULLABLE} SQL_NULLABLE = 1; {$EXTERNALSYM SQL_NULLABLE_UNKNOWN} SQL_NULLABLE_UNKNOWN = 2; {$EXTERNALSYM SQL_PRED_NONE} SQL_PRED_NONE = 0; {$EXTERNALSYM SQL_PRED_CHAR} SQL_PRED_CHAR = 1; {$EXTERNALSYM SQL_PRED_BASIC} SQL_PRED_BASIC = 2; {$EXTERNALSYM SQL_NAMED} SQL_NAMED = 0; {$EXTERNALSYM SQL_UNNAMED} SQL_UNNAMED = 1; {$EXTERNALSYM SQL_DESC_ALLOC_AUTO} SQL_DESC_ALLOC_AUTO = 1; {$EXTERNALSYM SQL_DESC_ALLOC_USER} SQL_DESC_ALLOC_USER = 2; {$EXTERNALSYM SQL_CLOSE} SQL_CLOSE = 0; {$EXTERNALSYM SQL_DROP} SQL_DROP = 1; {$EXTERNALSYM SQL_UNBIND} SQL_UNBIND = 2; {$EXTERNALSYM SQL_RESET_PARAMS} SQL_RESET_PARAMS = 3; {$EXTERNALSYM SQL_FETCH_NEXT} SQL_FETCH_NEXT = 1; {$EXTERNALSYM SQL_FETCH_FIRST} SQL_FETCH_FIRST = 2; {$EXTERNALSYM SQL_FETCH_FIRST_USER} SQL_FETCH_FIRST_USER = 31; {$EXTERNALSYM SQL_FETCH_FIRST_SYSTEM} SQL_FETCH_FIRST_SYSTEM = 32; {$EXTERNALSYM SQL_FETCH_LAST} SQL_FETCH_LAST = 3; {$EXTERNALSYM SQL_FETCH_PRIOR} SQL_FETCH_PRIOR = 4; {$EXTERNALSYM SQL_FETCH_ABSOLUTE} SQL_FETCH_ABSOLUTE = 5; {$EXTERNALSYM SQL_FETCH_RELATIVE} SQL_FETCH_RELATIVE = 6; {$EXTERNALSYM SQL_FETCH_BOOKMARK} SQL_FETCH_BOOKMARK = 8; {$EXTERNALSYM SQL_COMMIT} SQL_COMMIT = 0; {$EXTERNALSYM SQL_ROLLBACK} SQL_ROLLBACK = 1; {$EXTERNALSYM SQL_NULL_HENV} SQL_NULL_HENV = 0; {$EXTERNALSYM SQL_NULL_HDBC} SQL_NULL_HDBC = 0; {$EXTERNALSYM SQL_NULL_HSTMT} SQL_NULL_HSTMT = 0; {$EXTERNALSYM SQL_NULL_HDESC} SQL_NULL_HDESC = 0; {$EXTERNALSYM SQL_NULL_HANDLE} SQL_NULL_HANDLE = 0; {$EXTERNALSYM SQL_SCOPE_CURROW} SQL_SCOPE_CURROW = 0; {$EXTERNALSYM SQL_SCOPE_TRANSACTION} SQL_SCOPE_TRANSACTION = 1; {$EXTERNALSYM SQL_SCOPE_SESSION} SQL_SCOPE_SESSION = 2; {$EXTERNALSYM SQL_PC_UNKNOWN} SQL_PC_UNKNOWN = 0; {$EXTERNALSYM SQL_PC_NOT_PSEUDO} SQL_PC_NOT_PSEUDO = 1; {$EXTERNALSYM SQL_PC_PSEUDO} SQL_PC_PSEUDO = 2; {$EXTERNALSYM SQL_ROW_IDENTIFIER} SQL_ROW_IDENTIFIER = 1; {$EXTERNALSYM SQL_INDEX_UNIQUE} SQL_INDEX_UNIQUE = 0; {$EXTERNALSYM SQL_INDEX_ALL} SQL_INDEX_ALL = 1; {$EXTERNALSYM SQL_TABLE_STAT} SQL_TABLE_STAT = 0; {$EXTERNALSYM SQL_INDEX_CLUSTERED} SQL_INDEX_CLUSTERED = 1; {$EXTERNALSYM SQL_INDEX_HASHED} SQL_INDEX_HASHED = 2; {$EXTERNALSYM SQL_INDEX_OTHER} SQL_INDEX_OTHER = 3; {$EXTERNALSYM SQL_API_SQLALLOCCONNECT} SQL_API_SQLALLOCCONNECT = 1; {$EXTERNALSYM SQL_API_SQLALLOCENV} SQL_API_SQLALLOCENV = 2; {$EXTERNALSYM SQL_API_SQLALLOCHANDLE} SQL_API_SQLALLOCHANDLE = 1001; {$EXTERNALSYM SQL_API_SQLALLOCSTMT} SQL_API_SQLALLOCSTMT = 3; {$EXTERNALSYM SQL_API_SQLBINDCOL} SQL_API_SQLBINDCOL = 4; {$EXTERNALSYM SQL_API_SQLBINDPARAM} SQL_API_SQLBINDPARAM = 1002; {$EXTERNALSYM SQL_API_SQLCANCEL} SQL_API_SQLCANCEL = 5; {$EXTERNALSYM SQL_API_SQLCLOSECURSOR} SQL_API_SQLCLOSECURSOR = 1003; {$EXTERNALSYM SQL_API_SQLCOLATTRIBUTE} SQL_API_SQLCOLATTRIBUTE = 6; {$EXTERNALSYM SQL_API_SQLCOLUMNS} SQL_API_SQLCOLUMNS = 40; {$EXTERNALSYM SQL_API_SQLCONNECT} SQL_API_SQLCONNECT = 7; {$EXTERNALSYM SQL_API_SQLCOPYDESC} SQL_API_SQLCOPYDESC = 1004; {$EXTERNALSYM SQL_API_SQLDATASOURCES} SQL_API_SQLDATASOURCES = 57; {$EXTERNALSYM SQL_API_SQLDESCRIBECOL} SQL_API_SQLDESCRIBECOL = 8; {$EXTERNALSYM SQL_API_SQLDISCONNECT} SQL_API_SQLDISCONNECT = 9; {$EXTERNALSYM SQL_API_SQLENDTRAN} SQL_API_SQLENDTRAN = 1005; {$EXTERNALSYM SQL_API_SQLERROR} SQL_API_SQLERROR = 10; {$EXTERNALSYM SQL_API_SQLEXECDIRECT} SQL_API_SQLEXECDIRECT = 11; {$EXTERNALSYM SQL_API_SQLEXECUTE} SQL_API_SQLEXECUTE = 12; {$EXTERNALSYM SQL_API_SQLFETCH} SQL_API_SQLFETCH = 13; {$EXTERNALSYM SQL_API_SQLFETCHSCROLL} SQL_API_SQLFETCHSCROLL = 1021; {$EXTERNALSYM SQL_API_SQLFREECONNECT} SQL_API_SQLFREECONNECT = 14; {$EXTERNALSYM SQL_API_SQLFREEENV} SQL_API_SQLFREEENV = 15; {$EXTERNALSYM SQL_API_SQLFREEHANDLE} SQL_API_SQLFREEHANDLE = 1006; {$EXTERNALSYM SQL_API_SQLFREESTMT} SQL_API_SQLFREESTMT = 16; {$EXTERNALSYM SQL_API_SQLGETCONNECTATTR} SQL_API_SQLGETCONNECTATTR = 1007; {$EXTERNALSYM SQL_API_SQLGETCONNECTOPTION} SQL_API_SQLGETCONNECTOPTION = 42; {$EXTERNALSYM SQL_API_SQLGETCURSORNAME} SQL_API_SQLGETCURSORNAME = 17; {$EXTERNALSYM SQL_API_SQLGETDATA} SQL_API_SQLGETDATA = 43; {$EXTERNALSYM SQL_API_SQLGETDESCFIELD} SQL_API_SQLGETDESCFIELD = 1008; {$EXTERNALSYM SQL_API_SQLGETDESCREC} SQL_API_SQLGETDESCREC = 1009; {$EXTERNALSYM SQL_API_SQLGETDIAGFIELD} SQL_API_SQLGETDIAGFIELD = 1010; {$EXTERNALSYM SQL_API_SQLGETDIAGREC} SQL_API_SQLGETDIAGREC = 1011; {$EXTERNALSYM SQL_API_SQLGETENVATTR} SQL_API_SQLGETENVATTR = 1012; {$EXTERNALSYM SQL_API_SQLGETFUNCTIONS} SQL_API_SQLGETFUNCTIONS = 44; {$EXTERNALSYM SQL_API_SQLGETINFO} SQL_API_SQLGETINFO = 45; {$EXTERNALSYM SQL_API_SQLGETSTMTATTR} SQL_API_SQLGETSTMTATTR = 1014; {$EXTERNALSYM SQL_API_SQLGETSTMTOPTION} SQL_API_SQLGETSTMTOPTION = 46; {$EXTERNALSYM SQL_API_SQLGETTYPEINFO} SQL_API_SQLGETTYPEINFO = 47; {$EXTERNALSYM SQL_API_SQLNUMRESULTCOLS} SQL_API_SQLNUMRESULTCOLS = 18; {$EXTERNALSYM SQL_API_SQLPARAMDATA} SQL_API_SQLPARAMDATA = 48; {$EXTERNALSYM SQL_API_SQLPREPARE} SQL_API_SQLPREPARE = 19; {$EXTERNALSYM SQL_API_SQLPUTDATA} SQL_API_SQLPUTDATA = 49; {$EXTERNALSYM SQL_API_SQLROWCOUNT} SQL_API_SQLROWCOUNT = 20; {$EXTERNALSYM SQL_API_SQLSETCONNECTATTR} SQL_API_SQLSETCONNECTATTR = 1016; {$EXTERNALSYM SQL_API_SQLSETCONNECTOPTION} SQL_API_SQLSETCONNECTOPTION = 50; {$EXTERNALSYM SQL_API_SQLSETCURSORNAME} SQL_API_SQLSETCURSORNAME = 21; {$EXTERNALSYM SQL_API_SQLSETDESCFIELD} SQL_API_SQLSETDESCFIELD = 1017; {$EXTERNALSYM SQL_API_SQLSETDESCREC} SQL_API_SQLSETDESCREC = 1018; {$EXTERNALSYM SQL_API_SQLSETENVATTR} SQL_API_SQLSETENVATTR = 1019; {$EXTERNALSYM SQL_API_SQLSETPARAM} SQL_API_SQLSETPARAM = 22; {$EXTERNALSYM SQL_API_SQLSETSTMTATTR} SQL_API_SQLSETSTMTATTR = 1020; {$EXTERNALSYM SQL_API_SQLSETSTMTOPTION} SQL_API_SQLSETSTMTOPTION = 51; {$EXTERNALSYM SQL_API_SQLSPECIALCOLUMNS} SQL_API_SQLSPECIALCOLUMNS = 52; {$EXTERNALSYM SQL_API_SQLSTATISTICS} SQL_API_SQLSTATISTICS = 53; {$EXTERNALSYM SQL_API_SQLTABLES} SQL_API_SQLTABLES = 54; {$EXTERNALSYM SQL_API_SQLTRANSACT} SQL_API_SQLTRANSACT = 23; {$EXTERNALSYM SQL_API_SQLALLOCHANDLESTD} SQL_API_SQLALLOCHANDLESTD = 73; {$EXTERNALSYM SQL_API_SQLBULKOPERATIONS} SQL_API_SQLBULKOPERATIONS = 24; {$EXTERNALSYM SQL_API_SQLBINDPARAMETER} SQL_API_SQLBINDPARAMETER = 72; {$EXTERNALSYM SQL_API_SQLBROWSECONNECT} SQL_API_SQLBROWSECONNECT = 55; {$EXTERNALSYM SQL_API_SQLCOLATTRIBUTES} SQL_API_SQLCOLATTRIBUTES = 6; {$EXTERNALSYM SQL_API_SQLCOLUMNPRIVILEGES} SQL_API_SQLCOLUMNPRIVILEGES = 56; {$EXTERNALSYM SQL_API_SQLDESCRIBEPARAM} SQL_API_SQLDESCRIBEPARAM = 58; {$EXTERNALSYM SQL_API_SQLDRIVERCONNECT} SQL_API_SQLDRIVERCONNECT = 41; {$EXTERNALSYM SQL_API_SQLDRIVERS} SQL_API_SQLDRIVERS = 71; {$EXTERNALSYM SQL_API_SQLEXTENDEDFETCH} SQL_API_SQLEXTENDEDFETCH = 59; {$EXTERNALSYM SQL_API_SQLFOREIGNKEYS} SQL_API_SQLFOREIGNKEYS = 60; {$EXTERNALSYM SQL_API_SQLMORERESULTS} SQL_API_SQLMORERESULTS = 61; {$EXTERNALSYM SQL_API_SQLNATIVESQL} SQL_API_SQLNATIVESQL = 62; {$EXTERNALSYM SQL_API_SQLNUMPARAMS} SQL_API_SQLNUMPARAMS = 63; {$EXTERNALSYM SQL_API_SQLPARAMOPTIONS} SQL_API_SQLPARAMOPTIONS = 64; {$EXTERNALSYM SQL_API_SQLPRIMARYKEYS} SQL_API_SQLPRIMARYKEYS = 65; {$EXTERNALSYM SQL_API_SQLPROCEDURECOLUMNS} SQL_API_SQLPROCEDURECOLUMNS = 66; {$EXTERNALSYM SQL_API_SQLPROCEDURES} SQL_API_SQLPROCEDURES = 67; {$EXTERNALSYM SQL_API_SQLSETPOS} SQL_API_SQLSETPOS = 68; {$EXTERNALSYM SQL_API_SQLSETSCROLLOPTIONS} SQL_API_SQLSETSCROLLOPTIONS = 69; {$EXTERNALSYM SQL_API_SQLTABLEPRIVILEGES} SQL_API_SQLTABLEPRIVILEGES = 70; {$EXTERNALSYM SQL_MAX_DRIVER_CONNECTIONS} SQL_MAX_DRIVER_CONNECTIONS = 0; {$EXTERNALSYM SQL_MAXIMUM_DRIVER_CONNECTIONS} SQL_MAXIMUM_DRIVER_CONNECTIONS = SQL_MAX_DRIVER_CONNECTIONS; {$EXTERNALSYM SQL_MAX_CONCURRENT_ACTIVITIES} SQL_MAX_CONCURRENT_ACTIVITIES = 1; {$EXTERNALSYM SQL_MAXIMUM_CONCURRENT_ACTIVITIES} SQL_MAXIMUM_CONCURRENT_ACTIVITIES = SQL_MAX_CONCURRENT_ACTIVITIES; {$EXTERNALSYM SQL_DATA_SOURCE_NAME} SQL_DATA_SOURCE_NAME = 2; {$EXTERNALSYM SQL_FETCH_DIRECTION} SQL_FETCH_DIRECTION = 8; {$EXTERNALSYM SQL_CURSOR_COMMIT_BEHAVIOR} SQL_CURSOR_COMMIT_BEHAVIOR = 23; {$EXTERNALSYM SQL_DATA_SOURCE_READ_ONLY} SQL_DATA_SOURCE_READ_ONLY = 25; {$EXTERNALSYM SQL_DEFAULT_TXN_ISOLATION} SQL_DEFAULT_TXN_ISOLATION = 26; {$EXTERNALSYM SQL_IDENTIFIER_CASE} SQL_IDENTIFIER_CASE = 28; {$EXTERNALSYM SQL_IDENTIFIER_QUOTE_CHAR} SQL_IDENTIFIER_QUOTE_CHAR = 29; {$EXTERNALSYM SQL_MAX_COLUMN_NAME_LEN} SQL_MAX_COLUMN_NAME_LEN = 30; {$EXTERNALSYM SQL_MAXIMUM_COLUMN_NAME_LENGTH} SQL_MAXIMUM_COLUMN_NAME_LENGTH = SQL_MAX_COLUMN_NAME_LEN; {$EXTERNALSYM SQL_MAX_CURSOR_NAME_LEN} SQL_MAX_CURSOR_NAME_LEN = 31; {$EXTERNALSYM SQL_MAXIMUM_CURSOR_NAME_LENGTH} SQL_MAXIMUM_CURSOR_NAME_LENGTH = SQL_MAX_CURSOR_NAME_LEN; {$EXTERNALSYM SQL_MAX_SCHEMA_NAME_LEN} SQL_MAX_SCHEMA_NAME_LEN = 32; {$EXTERNALSYM SQL_MAXIMUM_SCHEMA_NAME_LENGTH} SQL_MAXIMUM_SCHEMA_NAME_LENGTH = SQL_MAX_SCHEMA_NAME_LEN; {$EXTERNALSYM SQL_MAX_CATALOG_NAME_LEN} SQL_MAX_CATALOG_NAME_LEN = 34; {$EXTERNALSYM SQL_MAXIMUM_CATALOG_NAME_LENGTH} SQL_MAXIMUM_CATALOG_NAME_LENGTH = SQL_MAX_CATALOG_NAME_LEN; {$EXTERNALSYM SQL_MAX_TABLE_NAME_LEN} SQL_MAX_TABLE_NAME_LEN = 35; {$EXTERNALSYM SQL_SCROLL_CONCURRENCY} SQL_SCROLL_CONCURRENCY = 43; {$EXTERNALSYM SQL_TXN_CAPABLE} SQL_TXN_CAPABLE = 46; {$EXTERNALSYM SQL_TRANSACTION_CAPABLE} SQL_TRANSACTION_CAPABLE = SQL_TXN_CAPABLE; {$EXTERNALSYM SQL_USER_NAME} SQL_USER_NAME = 47; {$EXTERNALSYM SQL_TXN_ISOLATION_OPTION} SQL_TXN_ISOLATION_OPTION = 72; {$EXTERNALSYM SQL_TRANSACTION_ISOLATION_OPTION} SQL_TRANSACTION_ISOLATION_OPTION = SQL_TXN_ISOLATION_OPTION; {$EXTERNALSYM SQL_INTEGRITY} SQL_INTEGRITY = 73; {$EXTERNALSYM SQL_GETDATA_EXTENSIONS} SQL_GETDATA_EXTENSIONS = 81; {$EXTERNALSYM SQL_NULL_COLLATION} SQL_NULL_COLLATION = 85; {$EXTERNALSYM SQL_ALTER_TABLE} SQL_ALTER_TABLE = 86; {$EXTERNALSYM SQL_ORDER_BY_COLUMNS_IN_SELECT} SQL_ORDER_BY_COLUMNS_IN_SELECT = 90; {$EXTERNALSYM SQL_SPECIAL_CHARACTERS} SQL_SPECIAL_CHARACTERS = 94; {$EXTERNALSYM SQL_MAX_COLUMNS_IN_GROUP_BY} SQL_MAX_COLUMNS_IN_GROUP_BY = 97; {$EXTERNALSYM SQL_MAXIMUM_COLUMNS_IN_GROUP_BY} SQL_MAXIMUM_COLUMNS_IN_GROUP_BY = SQL_MAX_COLUMNS_IN_GROUP_BY; {$EXTERNALSYM SQL_MAX_COLUMNS_IN_INDEX} SQL_MAX_COLUMNS_IN_INDEX = 98; {$EXTERNALSYM SQL_MAXIMUM_COLUMNS_IN_INDEX} SQL_MAXIMUM_COLUMNS_IN_INDEX = SQL_MAX_COLUMNS_IN_INDEX; {$EXTERNALSYM SQL_MAX_COLUMNS_IN_ORDER_BY} SQL_MAX_COLUMNS_IN_ORDER_BY = 99; {$EXTERNALSYM SQL_MAXIMUM_COLUMNS_IN_ORDER_BY} SQL_MAXIMUM_COLUMNS_IN_ORDER_BY = SQL_MAX_COLUMNS_IN_ORDER_BY; {$EXTERNALSYM SQL_MAX_COLUMNS_IN_SELECT} SQL_MAX_COLUMNS_IN_SELECT = 100; {$EXTERNALSYM SQL_MAXIMUM_COLUMNS_IN_SELECT} SQL_MAXIMUM_COLUMNS_IN_SELECT = SQL_MAX_COLUMNS_IN_SELECT; {$EXTERNALSYM SQL_MAX_COLUMNS_IN_TABLE} SQL_MAX_COLUMNS_IN_TABLE = 101; {$EXTERNALSYM SQL_MAX_INDEX_SIZE} SQL_MAX_INDEX_SIZE = 102; {$EXTERNALSYM SQL_MAXIMUM_INDEX_SIZE} SQL_MAXIMUM_INDEX_SIZE = SQL_MAX_INDEX_SIZE; {$EXTERNALSYM SQL_MAX_ROW_SIZE} SQL_MAX_ROW_SIZE = 104; {$EXTERNALSYM SQL_MAXIMUM_ROW_SIZE} SQL_MAXIMUM_ROW_SIZE = SQL_MAX_ROW_SIZE; {$EXTERNALSYM SQL_MAX_STATEMENT_LEN} SQL_MAX_STATEMENT_LEN = 105; {$EXTERNALSYM SQL_MAXIMUM_STATEMENT_LENGTH} SQL_MAXIMUM_STATEMENT_LENGTH = SQL_MAX_STATEMENT_LEN; {$EXTERNALSYM SQL_MAX_TABLES_IN_SELECT} SQL_MAX_TABLES_IN_SELECT = 106; {$EXTERNALSYM SQL_MAXIMUM_TABLES_IN_SELECT} SQL_MAXIMUM_TABLES_IN_SELECT = SQL_MAX_TABLES_IN_SELECT; {$EXTERNALSYM SQL_MAX_USER_NAME_LEN} SQL_MAX_USER_NAME_LEN = 107; {$EXTERNALSYM SQL_MAXIMUM_USER_NAME_LENGTH} SQL_MAXIMUM_USER_NAME_LENGTH = SQL_MAX_USER_NAME_LEN; {$EXTERNALSYM SQL_OJ_CAPABILITIES} SQL_OJ_CAPABILITIES = 115; {$EXTERNALSYM SQL_OUTER_JOIN_CAPABILITIES} SQL_OUTER_JOIN_CAPABILITIES = SQL_OJ_CAPABILITIES; {$EXTERNALSYM SQL_XOPEN_CLI_YEAR} SQL_XOPEN_CLI_YEAR = 10000; {$EXTERNALSYM SQL_CURSOR_SENSITIVITY} SQL_CURSOR_SENSITIVITY = 10001; {$EXTERNALSYM SQL_DESCRIBE_PARAMETER} SQL_DESCRIBE_PARAMETER = 10002; {$EXTERNALSYM SQL_CATALOG_NAME} SQL_CATALOG_NAME = 10003; {$EXTERNALSYM SQL_COLLATION_SEQ} SQL_COLLATION_SEQ = 10004; {$EXTERNALSYM SQL_MAX_IDENTIFIER_LEN} SQL_MAX_IDENTIFIER_LEN = 10005; {$EXTERNALSYM SQL_MAXIMUM_IDENTIFIER_LENGTH} SQL_MAXIMUM_IDENTIFIER_LENGTH = SQL_MAX_IDENTIFIER_LEN; {$EXTERNALSYM SQL_AT_ADD_COLUMN} SQL_AT_ADD_COLUMN = $00000001; {$EXTERNALSYM SQL_AT_DROP_COLUMN} SQL_AT_DROP_COLUMN = $00000002; {$EXTERNALSYM SQL_AT_ADD_CONSTRAINT} SQL_AT_ADD_CONSTRAINT = $00000008; {$EXTERNALSYM SQL_AM_NONE} SQL_AM_NONE = 0; {$EXTERNALSYM SQL_AM_CONNECTION} SQL_AM_CONNECTION = 1; {$EXTERNALSYM SQL_AM_STATEMENT} SQL_AM_STATEMENT = 2; {$EXTERNALSYM SQL_CB_DELETE} SQL_CB_DELETE = 0; {$EXTERNALSYM SQL_CB_CLOSE} SQL_CB_CLOSE = 1; {$EXTERNALSYM SQL_CB_PRESERVE} SQL_CB_PRESERVE = 2; {$EXTERNALSYM SQL_FD_FETCH_NEXT} SQL_FD_FETCH_NEXT = $00000001; {$EXTERNALSYM SQL_FD_FETCH_FIRST} SQL_FD_FETCH_FIRST = $00000002; {$EXTERNALSYM SQL_FD_FETCH_LAST} SQL_FD_FETCH_LAST = $00000004; {$EXTERNALSYM SQL_FD_FETCH_PRIOR} SQL_FD_FETCH_PRIOR = $00000008; {$EXTERNALSYM SQL_FD_FETCH_ABSOLUTE} SQL_FD_FETCH_ABSOLUTE = $00000010; {$EXTERNALSYM SQL_FD_FETCH_RELATIVE} SQL_FD_FETCH_RELATIVE = $00000020; {$EXTERNALSYM SQL_GD_ANY_COLUMN} SQL_GD_ANY_COLUMN = $00000001; {$EXTERNALSYM SQL_GD_ANY_ORDER} SQL_GD_ANY_ORDER = $00000002; {$EXTERNALSYM SQL_IC_UPPER} SQL_IC_UPPER = 1; {$EXTERNALSYM SQL_IC_LOWER} SQL_IC_LOWER = 2; {$EXTERNALSYM SQL_IC_SENSITIVE} SQL_IC_SENSITIVE = 3; {$EXTERNALSYM SQL_IC_MIXED} SQL_IC_MIXED = 4; {$EXTERNALSYM SQL_OJ_LEFT} SQL_OJ_LEFT = $00000001; {$EXTERNALSYM SQL_OJ_RIGHT} SQL_OJ_RIGHT = $00000002; {$EXTERNALSYM SQL_OJ_FULL} SQL_OJ_FULL = $00000004; {$EXTERNALSYM SQL_OJ_NESTED} SQL_OJ_NESTED = $00000008; {$EXTERNALSYM SQL_OJ_NOT_ORDERED} SQL_OJ_NOT_ORDERED = $00000010; {$EXTERNALSYM SQL_OJ_INNER} SQL_OJ_INNER = $00000020; {$EXTERNALSYM SQL_OJ_ALL_COMPARISON_OPS} SQL_OJ_ALL_COMPARISON_OPS = $00000040; {$EXTERNALSYM SQL_SCCO_READ_ONLY} SQL_SCCO_READ_ONLY = $00000001; {$EXTERNALSYM SQL_SCCO_LOCK} SQL_SCCO_LOCK = $00000002; {$EXTERNALSYM SQL_SCCO_OPT_ROWVER} SQL_SCCO_OPT_ROWVER = $00000004; {$EXTERNALSYM SQL_SCCO_OPT_VALUES} SQL_SCCO_OPT_VALUES = $00000008; {$EXTERNALSYM SQL_TC_NONE} SQL_TC_NONE = 0; {$EXTERNALSYM SQL_TC_DML} SQL_TC_DML = 1; {$EXTERNALSYM SQL_TC_ALL} SQL_TC_ALL = 2; {$EXTERNALSYM SQL_TC_DDL_COMMIT} SQL_TC_DDL_COMMIT = 3; {$EXTERNALSYM SQL_TC_DDL_IGNORE} SQL_TC_DDL_IGNORE = 4; {$EXTERNALSYM SQL_TXN_READ_UNCOMMITTED} SQL_TXN_READ_UNCOMMITTED = $00000001; {$EXTERNALSYM SQL_TRANSACTION_READ_UNCOMMITTED} SQL_TRANSACTION_READ_UNCOMMITTED = SQL_TXN_READ_UNCOMMITTED; {$EXTERNALSYM SQL_TXN_READ_COMMITTED} SQL_TXN_READ_COMMITTED = $00000002; {$EXTERNALSYM SQL_TRANSACTION_READ_COMMITTED} SQL_TRANSACTION_READ_COMMITTED = SQL_TXN_READ_COMMITTED; {$EXTERNALSYM SQL_TXN_REPEATABLE_READ} SQL_TXN_REPEATABLE_READ = $00000004; {$EXTERNALSYM SQL_TRANSACTION_REPEATABLE_READ} SQL_TRANSACTION_REPEATABLE_READ = SQL_TXN_REPEATABLE_READ; {$EXTERNALSYM SQL_TXN_SERIALIZABLE} SQL_TXN_SERIALIZABLE = $00000008; {$EXTERNALSYM SQL_TRANSACTION_SERIALIZABLE} SQL_TRANSACTION_SERIALIZABLE = SQL_TXN_SERIALIZABLE; {$EXTERNALSYM SQL_NC_HIGH} SQL_NC_HIGH = 0; {$EXTERNALSYM SQL_NC_LOW} SQL_NC_LOW = 1; {$EXTERNALSYM SQL_IS_YEAR} SQL_IS_YEAR = 1; {$EXTERNALSYM SQL_IS_MONTH} SQL_IS_MONTH = 2; {$EXTERNALSYM SQL_IS_DAY} SQL_IS_DAY = 3; {$EXTERNALSYM SQL_IS_HOUR} SQL_IS_HOUR = 4; {$EXTERNALSYM SQL_IS_MINUTE} SQL_IS_MINUTE = 5; {$EXTERNALSYM SQL_IS_SECOND} SQL_IS_SECOND = 6; {$EXTERNALSYM SQL_IS_YEAR_TO_MONTH} SQL_IS_YEAR_TO_MONTH = 7; {$EXTERNALSYM SQL_IS_DAY_TO_HOUR} SQL_IS_DAY_TO_HOUR = 8; {$EXTERNALSYM SQL_IS_DAY_TO_MINUTE} SQL_IS_DAY_TO_MINUTE = 9; {$EXTERNALSYM SQL_IS_DAY_TO_SECOND} SQL_IS_DAY_TO_SECOND = 10; {$EXTERNALSYM SQL_IS_HOUR_TO_MINUTE} SQL_IS_HOUR_TO_MINUTE = 11; {$EXTERNALSYM SQL_IS_HOUR_TO_SECOND} SQL_IS_HOUR_TO_SECOND = 12; {$EXTERNALSYM SQL_IS_MINUTE_TO_SECOND} SQL_IS_MINUTE_TO_SECOND = 13; {$EXTERNALSYM SQL_MAX_NUMERIC_LEN} SQL_MAX_NUMERIC_LEN = 16; {$EXTERNALSYM SQL_IS_POINTER} SQL_IS_POINTER = -4; {$EXTERNALSYM SQL_IS_UINTEGER} SQL_IS_UINTEGER = -5; {$EXTERNALSYM SQL_IS_INTEGER} SQL_IS_INTEGER = -6; {$EXTERNALSYM SQL_IS_USMALLINT} SQL_IS_USMALLINT = -7; {$EXTERNALSYM SQL_IS_SMALLINT} SQL_IS_SMALLINT = -8; {$EXTERNALSYM SQL_CP_OFF} SQL_CP_OFF = $00000000; {$EXTERNALSYM SQL_CP_ONE_PER_DRIVER} SQL_CP_ONE_PER_DRIVER = $00000001; {$EXTERNALSYM SQL_CP_ONE_PER_HENV} SQL_CP_ONE_PER_HENV = $00000002; {$EXTERNALSYM SQL_CP_DEFAULT} SQL_CP_DEFAULT = SQL_CP_OFF; {$EXTERNALSYM SQL_CP_STRICT_MATCH} SQL_CP_STRICT_MATCH = $00000000; {$EXTERNALSYM SQL_CP_RELAXED_MATCH} SQL_CP_RELAXED_MATCH = $00000001; {$EXTERNALSYM SQL_CP_MATCH_DEFAULT} SQL_CP_MATCH_DEFAULT = SQL_CP_STRICT_MATCH; {$EXTERNALSYM SQL_MODE_READ_WRITE} SQL_MODE_READ_WRITE = $00000000; {$EXTERNALSYM SQL_MODE_READ_ONLY} SQL_MODE_READ_ONLY = $00000001; {$EXTERNALSYM SQL_MODE_DEFAULT} SQL_MODE_DEFAULT = SQL_MODE_READ_WRITE; {$EXTERNALSYM SQL_ACCESS_MODE} SQL_ACCESS_MODE = 101; {$EXTERNALSYM SQL_AUTOCOMMIT} SQL_AUTOCOMMIT = 102; {$EXTERNALSYM SQL_LOGIN_TIMEOUT} SQL_LOGIN_TIMEOUT = 103; {$EXTERNALSYM SQL_OPT_TRACE} SQL_OPT_TRACE = 104; {$EXTERNALSYM SQL_OPT_TRACEFILE} SQL_OPT_TRACEFILE = 105; {$EXTERNALSYM SQL_TRANSLATE_DLL} SQL_TRANSLATE_DLL = 106; {$EXTERNALSYM SQL_TRANSLATE_OPTION} SQL_TRANSLATE_OPTION = 107; {$EXTERNALSYM SQL_TXN_ISOLATION} SQL_TXN_ISOLATION = 108; {$EXTERNALSYM SQL_CURRENT_QUALIFIER} SQL_CURRENT_QUALIFIER = 109; {$EXTERNALSYM SQL_ODBC_CURSORS} SQL_ODBC_CURSORS = 110; {$EXTERNALSYM SQL_QUIET_MODE} SQL_QUIET_MODE = 111; {$EXTERNALSYM SQL_PACKET_SIZE} SQL_PACKET_SIZE = 112; {$EXTERNALSYM SQL_ATTR_ACCESS_MODE} SQL_ATTR_ACCESS_MODE = SQL_ACCESS_MODE; {$EXTERNALSYM SQL_ATTR_AUTOCOMMIT} SQL_ATTR_AUTOCOMMIT = SQL_AUTOCOMMIT; {$EXTERNALSYM SQL_ATTR_CONNECTION_TIMEOUT} SQL_ATTR_CONNECTION_TIMEOUT = 113; {$EXTERNALSYM SQL_ATTR_CURRENT_CATALOG} SQL_ATTR_CURRENT_CATALOG = SQL_CURRENT_QUALIFIER; {$EXTERNALSYM SQL_ATTR_DISCONNECT_BEHAVIOR} SQL_ATTR_DISCONNECT_BEHAVIOR = 114; {$EXTERNALSYM SQL_ATTR_ENLIST_IN_DTC} SQL_ATTR_ENLIST_IN_DTC = 1207; {$EXTERNALSYM SQL_ATTR_ENLIST_IN_XA} SQL_ATTR_ENLIST_IN_XA = 1208; {$EXTERNALSYM SQL_ATTR_LOGIN_TIMEOUT} SQL_ATTR_LOGIN_TIMEOUT = SQL_LOGIN_TIMEOUT; {$EXTERNALSYM SQL_ATTR_ODBC_CURSORS} SQL_ATTR_ODBC_CURSORS = SQL_ODBC_CURSORS; {$EXTERNALSYM SQL_ATTR_PACKET_SIZE} SQL_ATTR_PACKET_SIZE = SQL_PACKET_SIZE; {$EXTERNALSYM SQL_ATTR_QUIET_MODE} SQL_ATTR_QUIET_MODE = SQL_QUIET_MODE; {$EXTERNALSYM SQL_ATTR_TRACE} SQL_ATTR_TRACE = SQL_OPT_TRACE; {$EXTERNALSYM SQL_ATTR_TRACEFILE} SQL_ATTR_TRACEFILE = SQL_OPT_TRACEFILE; {$EXTERNALSYM SQL_ATTR_TRANSLATE_LIB} SQL_ATTR_TRANSLATE_LIB = SQL_TRANSLATE_DLL; {$EXTERNALSYM SQL_ATTR_TRANSLATE_OPTION} SQL_ATTR_TRANSLATE_OPTION = SQL_TRANSLATE_OPTION; {$EXTERNALSYM SQL_ATTR_TXN_ISOLATION} SQL_ATTR_TXN_ISOLATION = SQL_TXN_ISOLATION; {$EXTERNALSYM SQL_ASYNC_ENABLE_OFF} SQL_ASYNC_ENABLE_OFF = $00000000; {$EXTERNALSYM SQL_ASYNC_ENABLE_ON} SQL_ASYNC_ENABLE_ON = $00000001; {$EXTERNALSYM SQL_ASYNC_ENABLE_DEFAULT} SQL_ASYNC_ENABLE_DEFAULT = SQL_ASYNC_ENABLE_OFF; {$EXTERNALSYM SQL_QUERY_TIMEOUT} SQL_QUERY_TIMEOUT = 0; {$EXTERNALSYM SQL_MAX_ROWS} SQL_MAX_ROWS = 1; {$EXTERNALSYM SQL_NOSCAN} SQL_NOSCAN = 2; {$EXTERNALSYM SQL_MAX_LENGTH} SQL_MAX_LENGTH = 3; {$EXTERNALSYM SQL_ASYNC_ENABLE} SQL_ASYNC_ENABLE = 4; {$EXTERNALSYM SQL_BIND_TYPE} SQL_BIND_TYPE = 5; {$EXTERNALSYM SQL_CURSOR_TYPE} SQL_CURSOR_TYPE = 6; {$EXTERNALSYM SQL_CONCURRENCY} SQL_CONCURRENCY = 7; {$EXTERNALSYM SQL_KEYSET_SIZE} SQL_KEYSET_SIZE = 8; {$EXTERNALSYM SQL_ROWSET_SIZE} SQL_ROWSET_SIZE = 9; {$EXTERNALSYM SQL_SIMULATE_CURSOR} SQL_SIMULATE_CURSOR = 10; {$EXTERNALSYM SQL_RETRIEVE_DATA} SQL_RETRIEVE_DATA = 11; {$EXTERNALSYM SQL_USE_BOOKMARKS} SQL_USE_BOOKMARKS = 12; {$EXTERNALSYM SQL_GET_BOOKMARK} SQL_GET_BOOKMARK = 13; {$EXTERNALSYM SQL_ROW_NUMBER} SQL_ROW_NUMBER = 14; {$EXTERNALSYM SQL_ATTR_ASYNC_ENABLE} SQL_ATTR_ASYNC_ENABLE = 4; {$EXTERNALSYM SQL_ATTR_CONCURRENCY} SQL_ATTR_CONCURRENCY = SQL_CONCURRENCY; {$EXTERNALSYM SQL_ATTR_CURSOR_TYPE} SQL_ATTR_CURSOR_TYPE = SQL_CURSOR_TYPE; {$EXTERNALSYM SQL_ATTR_ENABLE_AUTO_IPD} SQL_ATTR_ENABLE_AUTO_IPD = 15; {$EXTERNALSYM SQL_ATTR_FETCH_BOOKMARK_PTR} SQL_ATTR_FETCH_BOOKMARK_PTR = 16; {$EXTERNALSYM SQL_ATTR_KEYSET_SIZE} SQL_ATTR_KEYSET_SIZE = SQL_KEYSET_SIZE; {$EXTERNALSYM SQL_ATTR_MAX_LENGTH} SQL_ATTR_MAX_LENGTH = SQL_MAX_LENGTH; {$EXTERNALSYM SQL_ATTR_MAX_ROWS} SQL_ATTR_MAX_ROWS = SQL_MAX_ROWS; {$EXTERNALSYM SQL_ATTR_NOSCAN} SQL_ATTR_NOSCAN = SQL_NOSCAN; {$EXTERNALSYM SQL_ATTR_PARAM_BIND_OFFSET_PTR} SQL_ATTR_PARAM_BIND_OFFSET_PTR = 17; {$EXTERNALSYM SQL_ATTR_PARAM_BIND_TYPE} SQL_ATTR_PARAM_BIND_TYPE = 18; {$EXTERNALSYM SQL_ATTR_PARAM_OPERATION_PTR} SQL_ATTR_PARAM_OPERATION_PTR = 19; {$EXTERNALSYM SQL_ATTR_PARAM_STATUS_PTR} SQL_ATTR_PARAM_STATUS_PTR = 20; {$EXTERNALSYM SQL_ATTR_PARAMS_PROCESSED_PTR} SQL_ATTR_PARAMS_PROCESSED_PTR = 21; {$EXTERNALSYM SQL_ATTR_PARAMSET_SIZE} SQL_ATTR_PARAMSET_SIZE = 22; {$EXTERNALSYM SQL_ATTR_QUERY_TIMEOUT} SQL_ATTR_QUERY_TIMEOUT = SQL_QUERY_TIMEOUT; {$EXTERNALSYM SQL_ATTR_RETRIEVE_DATA} SQL_ATTR_RETRIEVE_DATA = SQL_RETRIEVE_DATA; {$EXTERNALSYM SQL_ATTR_ROW_BIND_OFFSET_PTR} SQL_ATTR_ROW_BIND_OFFSET_PTR = 23; {$EXTERNALSYM SQL_ATTR_ROW_BIND_TYPE} SQL_ATTR_ROW_BIND_TYPE = SQL_BIND_TYPE; {$EXTERNALSYM SQL_ATTR_ROW_NUMBER} SQL_ATTR_ROW_NUMBER = SQL_ROW_NUMBER; {$EXTERNALSYM SQL_ATTR_ROW_OPERATION_PTR} SQL_ATTR_ROW_OPERATION_PTR = 24; {$EXTERNALSYM SQL_ATTR_ROW_STATUS_PTR} SQL_ATTR_ROW_STATUS_PTR = 25; {$EXTERNALSYM SQL_ATTR_ROWS_FETCHED_PTR} SQL_ATTR_ROWS_FETCHED_PTR = 26; {$EXTERNALSYM SQL_ATTR_ROW_ARRAY_SIZE} SQL_ATTR_ROW_ARRAY_SIZE = 27; {$EXTERNALSYM SQL_ATTR_SIMULATE_CURSOR} SQL_ATTR_SIMULATE_CURSOR = SQL_SIMULATE_CURSOR; {$EXTERNALSYM SQL_ATTR_USE_BOOKMARKS} SQL_ATTR_USE_BOOKMARKS = SQL_USE_BOOKMARKS; SQL_ATTR_GM_POSITIONAL_INSERT = 11000; //SQL_ATTR_GM_ALLOCATED_MEMORY = 11001; {$EXTERNALSYM SQL_AUTOCOMMIT_OFF} SQL_AUTOCOMMIT_OFF = $00000000; {$EXTERNALSYM SQL_AUTOCOMMIT_ON} SQL_AUTOCOMMIT_ON = $00000001; {$EXTERNALSYM SQL_AUTOCOMMIT_DEFAULT} SQL_AUTOCOMMIT_DEFAULT = SQL_AUTOCOMMIT_ON; {$EXTERNALSYM SQL_CUR_USE_IF_NEEDED} SQL_CUR_USE_IF_NEEDED = $00000000; {$EXTERNALSYM SQL_CUR_USE_ODBC} SQL_CUR_USE_ODBC = $00000001; {$EXTERNALSYM SQL_CUR_USE_DRIVER} SQL_CUR_USE_DRIVER = $00000002; {$EXTERNALSYM SQL_CUR_DEFAULT} SQL_CUR_DEFAULT = SQL_CUR_USE_DRIVER; {$EXTERNALSYM SQL_COPT_SS_BASE} SQL_COPT_SS_BASE = 1200; {$EXTERNALSYM SQL_ATTR_CONNECTION_DEAD} SQL_ATTR_CONNECTION_DEAD = SQL_COPT_SS_BASE + 9; {$EXTERNALSYM SQL_REMOTE_PWD} SQL_REMOTE_PWD = SQL_COPT_SS_BASE + 1; {$EXTERNALSYM SQL_USE_PROCEDURE_FOR_PREPARE} SQL_USE_PROCEDURE_FOR_PREPARE = SQL_COPT_SS_BASE + 2; {$EXTERNALSYM SQL_INTEGRATED_SECURITY} SQL_INTEGRATED_SECURITY = SQL_COPT_SS_BASE + 3; {$EXTERNALSYM SQL_PRESERVE_CURSORS} SQL_PRESERVE_CURSORS = SQL_COPT_SS_BASE + 4; {$EXTERNALSYM SQL_COPT_SS_USER_DATA} SQL_COPT_SS_USER_DATA = SQL_COPT_SS_BASE + 5; {$EXTERNALSYM SQL_COPT_SS_ANSI_OEM} SQL_COPT_SS_ANSI_OEM = SQL_COPT_SS_BASE + 6; {$EXTERNALSYM SQL_COPT_SS_CONNECTION_DEAD} SQL_COPT_SS_CONNECTION_DEAD = SQL_COPT_SS_BASE + 9; {$EXTERNALSYM SQL_COPT_SS_FALLBACK_CONNECT} SQL_COPT_SS_FALLBACK_CONNECT = SQL_COPT_SS_BASE + 10; {$EXTERNALSYM SQL_COPT_SS_PERF_DATA} SQL_COPT_SS_PERF_DATA = SQL_COPT_SS_BASE + 11; {$EXTERNALSYM SQL_COPT_SS_PERF_DATA_LOG} SQL_COPT_SS_PERF_DATA_LOG = SQL_COPT_SS_BASE + 12; {$EXTERNALSYM SQL_COPT_SS_PERF_QUERY_INTERVAL} SQL_COPT_SS_PERF_QUERY_INTERVAL = SQL_COPT_SS_BASE + 13; {$EXTERNALSYM SQL_COPT_SS_PERF_QUERY_LOG} SQL_COPT_SS_PERF_QUERY_LOG = SQL_COPT_SS_BASE + 14; {$EXTERNALSYM SQL_COPT_SS_PERF_QUERY} SQL_COPT_SS_PERF_QUERY = SQL_COPT_SS_BASE + 15; {$EXTERNALSYM SQL_COPT_SS_PERF_DATA_LOG_NOW} SQL_COPT_SS_PERF_DATA_LOG_NOW = SQL_COPT_SS_BASE + 16; {$EXTERNALSYM SQL_COPT_SS_PERF_QUERY_AUTO_LOG} SQL_COPT_SS_PERF_QUERY_AUTO_LOG = SQL_COPT_SS_BASE + 17; {$EXTERNALSYM SQL_COPT_SS_PERF_DATA_AUTO_LOG} SQL_COPT_SS_PERF_DATA_AUTO_LOG = SQL_COPT_SS_BASE + 18; {$EXTERNALSYM SQL_CD_TRUE} SQL_CD_TRUE = $00000001; {$EXTERNALSYM SQL_CD_FALSE} SQL_CD_FALSE = $00000000; {$EXTERNALSYM SQL_OPT_TRACE_OFF} SQL_OPT_TRACE_OFF = $00000000; {$EXTERNALSYM SQL_OPT_TRACE_ON} SQL_OPT_TRACE_ON = $00000001; {$EXTERNALSYM SQL_OPT_TRACE_DEFAULT} SQL_OPT_TRACE_DEFAULT = SQL_OPT_TRACE_OFF; {$EXTERNALSYM SQL_OPT_TRACE_FILE_DEFAULT} SQL_OPT_TRACE_FILE_DEFAULT = '\SQL.LOG'; {$EXTERNALSYM SQL_MAX_DSN_LENGTH} SQL_MAX_DSN_LENGTH = 32; {$EXTERNALSYM SQL_MAX_OPTION_STRING_LENGTH} SQL_MAX_OPTION_STRING_LENGTH = 256; {$EXTERNALSYM SQL_CONCUR_READ_ONLY} SQL_CONCUR_READ_ONLY = 1; {$EXTERNALSYM SQL_CONCUR_LOCK} SQL_CONCUR_LOCK = 2; {$EXTERNALSYM SQL_CONCUR_ROWVER} SQL_CONCUR_ROWVER = 3; {$EXTERNALSYM SQL_CONCUR_VALUES} SQL_CONCUR_VALUES = 4; {$EXTERNALSYM SQL_CONCUR_DEFAULT} SQL_CONCUR_DEFAULT = SQL_CONCUR_READ_ONLY; {$EXTERNALSYM SQL_CURSOR_FORWARD_ONLY} SQL_CURSOR_FORWARD_ONLY = $00000000; {$EXTERNALSYM SQL_CURSOR_KEYSET_DRIVEN} SQL_CURSOR_KEYSET_DRIVEN = $00000001; {$EXTERNALSYM SQL_CURSOR_DYNAMIC} SQL_CURSOR_DYNAMIC = $00000002; {$EXTERNALSYM SQL_CURSOR_STATIC} SQL_CURSOR_STATIC = $00000003; {$EXTERNALSYM SQL_CURSOR_TYPE_DEFAULT} SQL_CURSOR_TYPE_DEFAULT = SQL_CURSOR_FORWARD_ONLY; {$EXTERNALSYM SQL_NOSCAN_OFF} SQL_NOSCAN_OFF = $00000000; {$EXTERNALSYM SQL_NOSCAN_ON} SQL_NOSCAN_ON = $00000001; {$EXTERNALSYM SQL_NOSCAN_DEFAULT} SQL_NOSCAN_DEFAULT = SQL_NOSCAN_OFF; {$EXTERNALSYM SQL_COLUMN_COUNT} SQL_COLUMN_COUNT = 0; {$EXTERNALSYM SQL_COLUMN_NAME} SQL_COLUMN_NAME = 1; {$EXTERNALSYM SQL_COLUMN_TYPE} SQL_COLUMN_TYPE = 2; {$EXTERNALSYM SQL_COLUMN_LENGTH} SQL_COLUMN_LENGTH = 3; {$EXTERNALSYM SQL_COLUMN_PRECISION} SQL_COLUMN_PRECISION = 4; {$EXTERNALSYM SQL_COLUMN_SCALE} SQL_COLUMN_SCALE = 5; {$EXTERNALSYM SQL_COLUMN_DISPLAY_SIZE} SQL_COLUMN_DISPLAY_SIZE = 6; {$EXTERNALSYM SQL_COLUMN_NULLABLE} SQL_COLUMN_NULLABLE = 7; {$EXTERNALSYM SQL_COLUMN_UNSIGNED} SQL_COLUMN_UNSIGNED = 8; {$EXTERNALSYM SQL_COLUMN_MONEY} SQL_COLUMN_MONEY = 9; {$EXTERNALSYM SQL_COLUMN_UPDATABLE} SQL_COLUMN_UPDATABLE = 10; {$EXTERNALSYM SQL_COLUMN_AUTO_INCREMENT} SQL_COLUMN_AUTO_INCREMENT = 11; {$EXTERNALSYM SQL_COLUMN_CASE_SENSITIVE} SQL_COLUMN_CASE_SENSITIVE = 12; {$EXTERNALSYM SQL_COLUMN_SEARCHABLE} SQL_COLUMN_SEARCHABLE = 13; {$EXTERNALSYM SQL_COLUMN_TYPE_NAME} SQL_COLUMN_TYPE_NAME = 14; {$EXTERNALSYM SQL_COLUMN_TABLE_NAME} SQL_COLUMN_TABLE_NAME = 15; {$EXTERNALSYM SQL_COLUMN_OWNER_NAME} SQL_COLUMN_OWNER_NAME = 16; {$EXTERNALSYM SQL_COLUMN_QUALIFIER_NAME} SQL_COLUMN_QUALIFIER_NAME = 17; {$EXTERNALSYM SQL_COLUMN_LABEL} SQL_COLUMN_LABEL = 18; {$EXTERNALSYM SQL_ATTR_READONLY} SQL_ATTR_READONLY = 0; {$EXTERNALSYM SQL_ATTR_WRITE} SQL_ATTR_WRITE = 1; {$EXTERNALSYM SQL_ATTR_READWRITE_UNKNOWN} SQL_ATTR_READWRITE_UNKNOWN = 2; {$EXTERNALSYM SQL_UNSEARCHABLE} SQL_UNSEARCHABLE = 0; {$EXTERNALSYM SQL_LIKE_ONLY} SQL_LIKE_ONLY = 1; {$EXTERNALSYM SQL_ALL_EXCEPT_LIKE} SQL_ALL_EXCEPT_LIKE = 2; {$EXTERNALSYM SQL_SEARCHABLE} SQL_SEARCHABLE = 3; {$EXTERNALSYM SQL_PRED_SEARCHABLE} SQL_PRED_SEARCHABLE = SQL_SEARCHABLE; {$EXTERNALSYM SQL_POSITION} SQL_POSITION = 0; {$EXTERNALSYM SQL_REFRESH} SQL_REFRESH = 1; {$EXTERNALSYM SQL_UPDATE} SQL_UPDATE = 2; {$EXTERNALSYM SQL_DELETE} SQL_DELETE = 3; {$EXTERNALSYM SQL_ADD} SQL_ADD = 4; {$EXTERNALSYM SQL_LOCK_NO_CHANGE} SQL_LOCK_NO_CHANGE = 0; {$EXTERNALSYM SQL_LOCK_EXCLUSIVE} SQL_LOCK_EXCLUSIVE = 1; {$EXTERNALSYM SQL_LOCK_UNLOCK} SQL_LOCK_UNLOCK = 2; {$EXTERNALSYM SQL_UB_OFF} SQL_UB_OFF = 0; {$EXTERNALSYM SQL_UB_ON} SQL_UB_ON = 1; {$EXTERNALSYM SQL_UB_FIXED} SQL_UB_FIXED = SQL_UB_ON; {$EXTERNALSYM SQL_UB_VARIABLE} SQL_UB_VARIABLE = 2; {$EXTERNALSYM SQL_UB_DEFAULT} SQL_UB_DEFAULT = SQL_UB_OFF; {$EXTERNALSYM SQL_ROW_SUCCESS} SQL_ROW_SUCCESS = 0; {$EXTERNALSYM SQL_ROW_DELETED} SQL_ROW_DELETED = 1; {$EXTERNALSYM SQL_ROW_UPDATED} SQL_ROW_UPDATED = 2; {$EXTERNALSYM SQL_ROW_NOROW} SQL_ROW_NOROW = 3; {$EXTERNALSYM SQL_ROW_ADDED} SQL_ROW_ADDED = 4; {$EXTERNALSYM SQL_ROW_ERROR} SQL_ROW_ERROR = 5; {$EXTERNALSYM SQL_ROW_SUCCESS_WITH_INFO} SQL_ROW_SUCCESS_WITH_INFO = 6; {$EXTERNALSYM SQL_ROW_PROCEED} SQL_ROW_PROCEED = 0; {$EXTERNALSYM SQL_ROW_IGNORE} SQL_ROW_IGNORE = 1; {$EXTERNALSYM SQL_ALL_WILDCARD} SQL_ALL_WILDCARD = '%'; {$EXTERNALSYM SQL_ALL_CATALOGS} SQL_ALL_CATALOGS = SQL_ALL_WILDCARD; {$EXTERNALSYM SQL_ALL_SCHEMAS} SQL_ALL_SCHEMAS = SQL_ALL_WILDCARD; {$EXTERNALSYM SQL_ALL_TABLE_TYPES} SQL_ALL_TABLE_TYPES = SQL_ALL_WILDCARD; {$EXTERNALSYM SQL_QUICK} SQL_QUICK = 0; {$EXTERNALSYM SQL_ENSURE} SQL_ENSURE = 1; {$EXTERNALSYM SQL_SC_NON_UNIQUE} SQL_SC_NON_UNIQUE = 0; {$EXTERNALSYM SQL_SC_TRY_UNIQUE} SQL_SC_TRY_UNIQUE = 1; {$EXTERNALSYM SQL_SC_UNIQUE} SQL_SC_UNIQUE = 2; {$EXTERNALSYM SQL_SC_DEFAULT} SQL_SC_DEFAULT = SQL_SC_NON_UNIQUE; {$EXTERNALSYM SQL_RD_OFF} SQL_RD_OFF = 0; {$EXTERNALSYM SQL_RD_ON} SQL_RD_ON = 1; {$EXTERNALSYM SQL_RD_DEFAULT} SQL_RD_DEFAULT = SQL_RD_ON; {$EXTERNALSYM SQL_DIAG_CURSOR_ROW_COUNT} SQL_DIAG_CURSOR_ROW_COUNT = -1249; {$EXTERNALSYM SQL_DIAG_ROW_NUMBER} SQL_DIAG_ROW_NUMBER = -1248; {$EXTERNALSYM SQL_DIAG_COLUMN_NUMBER} SQL_DIAG_COLUMN_NUMBER = -1247; {$EXTERNALSYM SQL_DEFAULT_ROW_ARRAY_SIZE} SQL_DEFAULT_ROW_ARRAY_SIZE = 1; {$EXTERNALSYM SQL_DEFAULT_LOGIN_TIMEOUT} SQL_DEFAULT_LOGIN_TIMEOUT = 30; {$EXTERNALSYM SQL_DEFAULT_STATEMENT_TIMEOUT} SQL_DEFAULT_STATEMENT_TIMEOUT = 0; {$EXTERNALSYM SQL_DEFAULT_TIMEOUT} SQL_DEFAULT_TIMEOUT = 0; {$EXTERNALSYM SQL_DEFAULT_TRANSLATE_OPTIONS} SQL_DEFAULT_TRANSLATE_OPTIONS = 0; {$EXTERNALSYM SQL_DEFAULT_MAX_DATA_SIZE} SQL_DEFAULT_MAX_DATA_SIZE = 0; {$EXTERNALSYM SQL_DEFAULT_KEYSET_SIZE} SQL_DEFAULT_KEYSET_SIZE = 0; {$EXTERNALSYM SQL_DEFAULT_MAX_RECORDS} SQL_DEFAULT_MAX_RECORDS = 0; {$EXTERNALSYM ODBC_ADD_DSN} ODBC_ADD_DSN = 1; // Add data source {$EXTERNALSYM ODBC_CONFIG_DSN} ODBC_CONFIG_DSN = 2; // Configure (edit) data source {$EXTERNALSYM ODBC_REMOVE_DSN} ODBC_REMOVE_DSN = 3; // Remove data source {$EXTERNALSYM ODBC_ADD_SYS_DSN} ODBC_ADD_SYS_DSN = 4; // add a system DSN {$EXTERNALSYM ODBC_CONFIG_SYS_DSN} ODBC_CONFIG_SYS_DSN = 5; // Configure a system DSN {$EXTERNALSYM ODBC_REMOVE_SYS_DSN} ODBC_REMOVE_SYS_DSN = 6; // remove a system DSN {$EXTERNALSYM ODBC_REMOVE_DEFAULT_DSN} ODBC_REMOVE_DEFAULT_DSN = 7; // remove the default DSN {$EXTERNALSYM ODBC_INSTALL_INQUIRY} ODBC_INSTALL_INQUIRY = 1; {$EXTERNALSYM ODBC_INSTALL_COMPLETE} ODBC_INSTALL_COMPLETE = 2; {$EXTERNALSYM ODBC_INSTALL_DRIVER} ODBC_INSTALL_DRIVER = 1; {$EXTERNALSYM ODBC_REMOVE_DRIVER} ODBC_REMOVE_DRIVER = 2; {$EXTERNALSYM ODBC_CONFIG_DRIVER} ODBC_CONFIG_DRIVER = 3; {$EXTERNALSYM ODBC_CONFIG_DRIVER_MAX} ODBC_CONFIG_DRIVER_MAX = 100; {$EXTERNALSYM ODBC_BOTH_DSN} ODBC_BOTH_DSN = 0; {$EXTERNALSYM ODBC_USER_DSN} ODBC_USER_DSN = 1; {$EXTERNALSYM ODBC_SYSTEM_DSN} ODBC_SYSTEM_DSN = 2; {$EXTERNALSYM ODBC_ERROR_GENERAL_ERR} ODBC_ERROR_GENERAL_ERR = 1; {$EXTERNALSYM ODBC_ERROR_INVALID_BUFF_LEN} ODBC_ERROR_INVALID_BUFF_LEN = 2; {$EXTERNALSYM ODBC_ERROR_INVALID_HWND} ODBC_ERROR_INVALID_HWND = 3; {$EXTERNALSYM ODBC_ERROR_INVALID_STR} ODBC_ERROR_INVALID_STR = 4; {$EXTERNALSYM ODBC_ERROR_INVALID_REQUEST_TYPE} ODBC_ERROR_INVALID_REQUEST_TYPE = 5; {$EXTERNALSYM ODBC_ERROR_COMPONENT_NOT_FOUND} ODBC_ERROR_COMPONENT_NOT_FOUND = 6; {$EXTERNALSYM ODBC_ERROR_INVALID_NAME} ODBC_ERROR_INVALID_NAME = 7; {$EXTERNALSYM ODBC_ERROR_INVALID_KEYWORD_VALUE} ODBC_ERROR_INVALID_KEYWORD_VALUE = 8; {$EXTERNALSYM ODBC_ERROR_INVALID_DSN} ODBC_ERROR_INVALID_DSN = 9; {$EXTERNALSYM ODBC_ERROR_INVALID_INF} ODBC_ERROR_INVALID_INF = 10; {$EXTERNALSYM ODBC_ERROR_REQUEST_FAILED} ODBC_ERROR_REQUEST_FAILED = 11; {$EXTERNALSYM ODBC_ERROR_INVALID_PATH} ODBC_ERROR_INVALID_PATH = 12; {$EXTERNALSYM ODBC_ERROR_LOAD_LIB_FAILED} ODBC_ERROR_LOAD_LIB_FAILED = 13; {$EXTERNALSYM ODBC_ERROR_INVALID_PARAM_SEQUENCE} ODBC_ERROR_INVALID_PARAM_SEQUENCE = 14; {$EXTERNALSYM ODBC_ERROR_INVALID_LOG_FILE} ODBC_ERROR_INVALID_LOG_FILE = 15; {$EXTERNALSYM ODBC_ERROR_USER_CANCELED} ODBC_ERROR_USER_CANCELED = 16; {$EXTERNALSYM ODBC_ERROR_USAGE_UPDATE_FAILED} ODBC_ERROR_USAGE_UPDATE_FAILED = 17; {$EXTERNALSYM ODBC_ERROR_CREATE_DSN_FAILED} ODBC_ERROR_CREATE_DSN_FAILED = 18; {$EXTERNALSYM ODBC_ERROR_WRITING_SYSINFO_FAILED} ODBC_ERROR_WRITING_SYSINFO_FAILED = 19; {$EXTERNALSYM ODBC_ERROR_REMOVE_DSN_FAILED} ODBC_ERROR_REMOVE_DSN_FAILED = 20; {$EXTERNALSYM ODBC_ERROR_OUT_OF_MEM} ODBC_ERROR_OUT_OF_MEM = 21; {$EXTERNALSYM ODBC_ERROR_OUTPUT_STRING_TRUNCATED} ODBC_ERROR_OUTPUT_STRING_TRUNCATED = 22; {$EXTERNALSYM SQL_ACTIVE_CONNECTIONS} SQL_ACTIVE_CONNECTIONS = 0; {$EXTERNALSYM SQL_ACTIVE_STATEMENTS} SQL_ACTIVE_STATEMENTS = 1; {$EXTERNALSYM SQL_DRIVER_HDBC} SQL_DRIVER_HDBC = 3; {$EXTERNALSYM SQL_DRIVER_HENV} SQL_DRIVER_HENV = 4; {$EXTERNALSYM SQL_DRIVER_HSTMT} SQL_DRIVER_HSTMT = 5; {$EXTERNALSYM SQL_DRIVER_NAME} SQL_DRIVER_NAME = 6; {$EXTERNALSYM SQL_DRIVER_VER} SQL_DRIVER_VER = 7; {$EXTERNALSYM SQL_ODBC_API_CONFORMANCE} SQL_ODBC_API_CONFORMANCE = 9; {$EXTERNALSYM SQL_ODBC_VER} SQL_ODBC_VER = 10; {$EXTERNALSYM SQL_ROW_UPDATES} SQL_ROW_UPDATES = 11; {$EXTERNALSYM SQL_ODBC_SAG_CLI_CONFORMANCE} SQL_ODBC_SAG_CLI_CONFORMANCE = 12; {$EXTERNALSYM SQL_SERVER_NAME} SQL_SERVER_NAME = 13; {$EXTERNALSYM SQL_SEARCH_PATTERN_ESCAPE} SQL_SEARCH_PATTERN_ESCAPE = 14; {$EXTERNALSYM SQL_ODBC_SQL_CONFORMANCE} SQL_ODBC_SQL_CONFORMANCE = 15; {$EXTERNALSYM SQL_DATABASE_NAME} SQL_DATABASE_NAME = 16; {$EXTERNALSYM SQL_DBMS_NAME} SQL_DBMS_NAME = 17; {$EXTERNALSYM SQL_DBMS_VER} SQL_DBMS_VER = 18; {$EXTERNALSYM SQL_ACCESSIBLE_TABLES} SQL_ACCESSIBLE_TABLES = 19; {$EXTERNALSYM SQL_ACCESSIBLE_PROCEDURES} SQL_ACCESSIBLE_PROCEDURES = 20; {$EXTERNALSYM SQL_PROCEDURES} SQL_PROCEDURES = 21; {$EXTERNALSYM SQL_CONCAT_NULL_BEHAVIOR} SQL_CONCAT_NULL_BEHAVIOR = 22; {$EXTERNALSYM SQL_CURSOR_ROLLBACK_BEHAVIOR} SQL_CURSOR_ROLLBACK_BEHAVIOR = 24; {$EXTERNALSYM SQL_EXPRESSIONS_IN_ORDERBY} SQL_EXPRESSIONS_IN_ORDERBY = 27; {$EXTERNALSYM SQL_MAX_OWNER_NAME_LEN} SQL_MAX_OWNER_NAME_LEN = 32; {$EXTERNALSYM SQL_MAX_PROCEDURE_NAME_LEN} SQL_MAX_PROCEDURE_NAME_LEN = 33; {$EXTERNALSYM SQL_MAX_QUALIFIER_NAME_LEN} SQL_MAX_QUALIFIER_NAME_LEN = 34; {$EXTERNALSYM SQL_MULT_RESULT_SETS} SQL_MULT_RESULT_SETS = 36; {$EXTERNALSYM SQL_MULTIPLE_ACTIVE_TXN} SQL_MULTIPLE_ACTIVE_TXN = 37; {$EXTERNALSYM SQL_OUTER_JOINS} SQL_OUTER_JOINS = 38; {$EXTERNALSYM SQL_OWNER_TERM} SQL_OWNER_TERM = 39; {$EXTERNALSYM SQL_PROCEDURE_TERM} SQL_PROCEDURE_TERM = 40; {$EXTERNALSYM SQL_QUALIFIER_NAME_SEPARATOR} SQL_QUALIFIER_NAME_SEPARATOR = 41; {$EXTERNALSYM SQL_QUALIFIER_TERM} SQL_QUALIFIER_TERM = 42; {$EXTERNALSYM SQL_SCROLL_OPTIONS} SQL_SCROLL_OPTIONS = 44; {$EXTERNALSYM SQL_TABLE_TERM} SQL_TABLE_TERM = 45; {$EXTERNALSYM SQL_CONVERT_FUNCTIONS} SQL_CONVERT_FUNCTIONS = 48; {$EXTERNALSYM SQL_NUMERIC_FUNCTIONS} SQL_NUMERIC_FUNCTIONS = 49; {$EXTERNALSYM SQL_STRING_FUNCTIONS} SQL_STRING_FUNCTIONS = 50; {$EXTERNALSYM SQL_SYSTEM_FUNCTIONS} SQL_SYSTEM_FUNCTIONS = 51; {$EXTERNALSYM SQL_TIMEDATE_FUNCTIONS} SQL_TIMEDATE_FUNCTIONS = 52; {$EXTERNALSYM SQL_CONVERT_BIGINT} SQL_CONVERT_BIGINT = 53; {$EXTERNALSYM SQL_CONVERT_BINARY} SQL_CONVERT_BINARY = 54; {$EXTERNALSYM SQL_CONVERT_BIT} SQL_CONVERT_BIT = 55; {$EXTERNALSYM SQL_CONVERT_CHAR} SQL_CONVERT_CHAR = 56; {$EXTERNALSYM SQL_CONVERT_DATE} SQL_CONVERT_DATE = 57; {$EXTERNALSYM SQL_CONVERT_DECIMAL} SQL_CONVERT_DECIMAL = 58; {$EXTERNALSYM SQL_CONVERT_DOUBLE} SQL_CONVERT_DOUBLE = 59; {$EXTERNALSYM SQL_CONVERT_FLOAT} SQL_CONVERT_FLOAT = 60; {$EXTERNALSYM SQL_CONVERT_INTEGERT} SQL_CONVERT_INTEGERT = 61; {$EXTERNALSYM SQL_CONVERT_LONGVARCHAR} SQL_CONVERT_LONGVARCHAR = 62; {$EXTERNALSYM SQL_CONVERT_NUMERIC} SQL_CONVERT_NUMERIC = 63; {$EXTERNALSYM SQL_CONVERT_REAL} SQL_CONVERT_REAL = 64; {$EXTERNALSYM SQL_CONVERT_SMALLINT} SQL_CONVERT_SMALLINT = 65; {$EXTERNALSYM SQL_CONVERT_TIME} SQL_CONVERT_TIME = 66; {$EXTERNALSYM SQL_CONVERT_TIMESTAMP} SQL_CONVERT_TIMESTAMP = 67; {$EXTERNALSYM SQL_CONVERT_TINYINT} SQL_CONVERT_TINYINT = 68; {$EXTERNALSYM SQL_CONVERT_VARBINARY} SQL_CONVERT_VARBINARY = 69; {$EXTERNALSYM SQL_CONVERT_VARCHAR} SQL_CONVERT_VARCHAR = 70; {$EXTERNALSYM SQL_CONVERT_LONGVARBINARY} SQL_CONVERT_LONGVARBINARY = 71; {$EXTERNALSYM SQL_ODBC_SQL_OPT_IEF} SQL_ODBC_SQL_OPT_IEF = 73; {$EXTERNALSYM SQL_CORRELATION_NAME} SQL_CORRELATION_NAME = 74; {$EXTERNALSYM SQL_NON_NULLABLE_COLUMNS} SQL_NON_NULLABLE_COLUMNS = 75; {$EXTERNALSYM SQL_DRIVER_HLIB} SQL_DRIVER_HLIB = 76; {$EXTERNALSYM SQL_DRIVER_ODBC_VER} SQL_DRIVER_ODBC_VER = 77; {$EXTERNALSYM SQL_LOCK_TYPES} SQL_LOCK_TYPES = 78; {$EXTERNALSYM SQL_POS_OPERATIONS} SQL_POS_OPERATIONS = 79; {$EXTERNALSYM SQL_POSITIONED_STATEMENTS} SQL_POSITIONED_STATEMENTS = 80; {$EXTERNALSYM SQL_BOOKMARK_PERSISTENCE} SQL_BOOKMARK_PERSISTENCE = 82; {$EXTERNALSYM SQL_STATIC_SENSITIVITY} SQL_STATIC_SENSITIVITY = 83; {$EXTERNALSYM SQL_FILE_USAGE} SQL_FILE_USAGE = 84; {$EXTERNALSYM SQL_COLUMN_ALIAS} SQL_COLUMN_ALIAS = 87; {$EXTERNALSYM SQL_GROUP_BY} SQL_GROUP_BY = 88; {$EXTERNALSYM SQL_KEYWORDS} SQL_KEYWORDS = 89; {$EXTERNALSYM SQL_OWNER_USAGE} SQL_OWNER_USAGE = 91; {$EXTERNALSYM SQL_QUALIFIER_USAGE} SQL_QUALIFIER_USAGE = 92; {$EXTERNALSYM SQL_QUOTED_IDENTIFIER_CASE} SQL_QUOTED_IDENTIFIER_CASE = 93; {$EXTERNALSYM SQL_SUBQUERIES} SQL_SUBQUERIES = 95; {$EXTERNALSYM SQL_UNION} SQL_UNION = 96; {$EXTERNALSYM SQL_MAX_ROW_SIZE_INCLUDES_LONG} SQL_MAX_ROW_SIZE_INCLUDES_LONG = 103; {$EXTERNALSYM SQL_MAX_CHAR_LITERAL_LEN} SQL_MAX_CHAR_LITERAL_LEN = 108; {$EXTERNALSYM SQL_TIMEDATE_ADD_INTERVALS} SQL_TIMEDATE_ADD_INTERVALS = 109; {$EXTERNALSYM SQL_TIMEDATE_DIFF_INTERVALS} SQL_TIMEDATE_DIFF_INTERVALS = 110; {$EXTERNALSYM SQL_NEED_LONG_DATA_LEN} SQL_NEED_LONG_DATA_LEN = 111; {$EXTERNALSYM SQL_MAX_BINARY_LITERAL_LEN} SQL_MAX_BINARY_LITERAL_LEN = 112; {$EXTERNALSYM SQL_LIKE_ESCAPE_CLAUSE} SQL_LIKE_ESCAPE_CLAUSE = 113; {$EXTERNALSYM SQL_QUALIFIER_LOCATION} SQL_QUALIFIER_LOCATION = 114; {$EXTERNALSYM SQL_ACTIVE_ENVIRONMENTS} SQL_ACTIVE_ENVIRONMENTS = 116; {$EXTERNALSYM SQL_ALTER_DOMAIN} SQL_ALTER_DOMAIN = 117; {$EXTERNALSYM SQL_SQL_CONFORMANCE} SQL_SQL_CONFORMANCE = 118; {$EXTERNALSYM SQL_DATETIME_LITERALS} SQL_DATETIME_LITERALS = 119; {$EXTERNALSYM SQL_ASYNC_MODE} SQL_ASYNC_MODE = 10021; {$EXTERNALSYM SQL_BATCH_ROW_COUNT} SQL_BATCH_ROW_COUNT = 120; {$EXTERNALSYM SQL_BATCH_SUPPORT} SQL_BATCH_SUPPORT = 121; {$EXTERNALSYM SQL_CATALOG_LOCATION} SQL_CATALOG_LOCATION = SQL_QUALIFIER_LOCATION; {$EXTERNALSYM SQL_CATALOG_NAME_SEPARATOR} SQL_CATALOG_NAME_SEPARATOR = SQL_QUALIFIER_NAME_SEPARATOR; {$EXTERNALSYM SQL_CATALOG_TERM} SQL_CATALOG_TERM = SQL_QUALIFIER_TERM; {$EXTERNALSYM SQL_CATALOG_USAGE} SQL_CATALOG_USAGE = SQL_QUALIFIER_USAGE; {$EXTERNALSYM SQL_CONVERT_WCHAR} SQL_CONVERT_WCHAR = 122; {$EXTERNALSYM SQL_CONVERT_INTERVAL_DAY_TIME} SQL_CONVERT_INTERVAL_DAY_TIME = 123; {$EXTERNALSYM SQL_CONVERT_INTERVAL_YEAR_MONTH} SQL_CONVERT_INTERVAL_YEAR_MONTH = 124; {$EXTERNALSYM SQL_CONVERT_WLONGVARCHAR} SQL_CONVERT_WLONGVARCHAR = 125; {$EXTERNALSYM SQL_CONVERT_WVARCHAR} SQL_CONVERT_WVARCHAR = 126; {$EXTERNALSYM SQL_CREATE_ASSERTION} SQL_CREATE_ASSERTION = 127; {$EXTERNALSYM SQL_CREATE_CHARACTER_SET} SQL_CREATE_CHARACTER_SET = 128; {$EXTERNALSYM SQL_CREATE_COLLATION} SQL_CREATE_COLLATION = 129; {$EXTERNALSYM SQL_CREATE_DOMAIN} SQL_CREATE_DOMAIN = 130; {$EXTERNALSYM SQL_CREATE_SCHEMA} SQL_CREATE_SCHEMA = 131; {$EXTERNALSYM SQL_CREATE_TABLE} SQL_CREATE_TABLE = 132; {$EXTERNALSYM SQL_CREATE_TRANSLATION} SQL_CREATE_TRANSLATION = 133; {$EXTERNALSYM SQL_CREATE_VIEW} SQL_CREATE_VIEW = 134; {$EXTERNALSYM SQL_DRIVER_HDESC} SQL_DRIVER_HDESC = 135; {$EXTERNALSYM SQL_DROP_ASSERTION} SQL_DROP_ASSERTION = 136; {$EXTERNALSYM SQL_DROP_CHARACTER_SET} SQL_DROP_CHARACTER_SET = 137; {$EXTERNALSYM SQL_DROP_COLLATION} SQL_DROP_COLLATION = 138; {$EXTERNALSYM SQL_DROP_DOMAIN} SQL_DROP_DOMAIN = 139; {$EXTERNALSYM SQL_DROP_SCHEMA} SQL_DROP_SCHEMA = 140; {$EXTERNALSYM SQL_DROP_TABLE} SQL_DROP_TABLE = 141; {$EXTERNALSYM SQL_DROP_TRANSLATION} SQL_DROP_TRANSLATION = 142; {$EXTERNALSYM SQL_DROP_VIEW} SQL_DROP_VIEW = 143; {$EXTERNALSYM SQL_DYNAMIC_CURSOR_ATTRIBUTES1} SQL_DYNAMIC_CURSOR_ATTRIBUTES1 = 144; {$EXTERNALSYM SQL_DYNAMIC_CURSOR_ATTRIBUTES2} SQL_DYNAMIC_CURSOR_ATTRIBUTES2 = 145; {$EXTERNALSYM SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES1} SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES1 = 146; {$EXTERNALSYM SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2} SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2 = 147; {$EXTERNALSYM SQL_INDEX_KEYWORDS} SQL_INDEX_KEYWORDS = 148; {$EXTERNALSYM SQL_INFO_SCHEMA_VIEWS} SQL_INFO_SCHEMA_VIEWS = 149; {$EXTERNALSYM SQL_KEYSET_CURSOR_ATTRIBUTES1} SQL_KEYSET_CURSOR_ATTRIBUTES1 = 150; {$EXTERNALSYM SQL_KEYSET_CURSOR_ATTRIBUTES2} SQL_KEYSET_CURSOR_ATTRIBUTES2 = 151; {$EXTERNALSYM SQL_MAX_ASYNC_CONCURRENT_STATEMENTS} SQL_MAX_ASYNC_CONCURRENT_STATEMENTS = 10022; {$EXTERNALSYM SQL_ODBC_INTERFACE_CONFORMANCE} SQL_ODBC_INTERFACE_CONFORMANCE = 152; {$EXTERNALSYM SQL_PARAM_ARRAY_ROW_COUNTS} SQL_PARAM_ARRAY_ROW_COUNTS = 153; {$EXTERNALSYM SQL_PARAM_ARRAY_SELECTS} SQL_PARAM_ARRAY_SELECTS = 154; {$EXTERNALSYM SQL_SCHEMA_TERM} SQL_SCHEMA_TERM = SQL_OWNER_TERM; {$EXTERNALSYM SQL_SCHEMA_USAGE} SQL_SCHEMA_USAGE = SQL_OWNER_USAGE; {$EXTERNALSYM SQL_SQL92_DATETIME_FUNCTIONS} SQL_SQL92_DATETIME_FUNCTIONS = 155; {$EXTERNALSYM SQL_SQL92_FOREIGN_KEY_DELETE_RULE} SQL_SQL92_FOREIGN_KEY_DELETE_RULE = 156; {$EXTERNALSYM SQL_SQL92_FOREIGN_KEY_UPDATE_RULE} SQL_SQL92_FOREIGN_KEY_UPDATE_RULE = 157; {$EXTERNALSYM SQL_SQL92_GRANT} SQL_SQL92_GRANT = 158; {$EXTERNALSYM SQL_SQL92_NUMERIC_VALUE_FUNCTIONS} SQL_SQL92_NUMERIC_VALUE_FUNCTIONS = 159; {$EXTERNALSYM SQL_SQL92_PREDICATES} SQL_SQL92_PREDICATES = 160; {$EXTERNALSYM SQL_SQL92_RELATIONAL_JOIN_OPERATORS} SQL_SQL92_RELATIONAL_JOIN_OPERATORS = 161; {$EXTERNALSYM SQL_SQL92_REVOKE} SQL_SQL92_REVOKE = 162; {$EXTERNALSYM SQL_SQL92_ROW_VALUE_CONSTRUCTOR} SQL_SQL92_ROW_VALUE_CONSTRUCTOR = 163; {$EXTERNALSYM SQL_SQL92_STRING_FUNCTIONS} SQL_SQL92_STRING_FUNCTIONS = 164; {$EXTERNALSYM SQL_SQL92_VALUE_EXPRESSIONS} SQL_SQL92_VALUE_EXPRESSIONS = 165; {$EXTERNALSYM SQL_STANDARD_CLI_CONFORMANCE} SQL_STANDARD_CLI_CONFORMANCE = 166; {$EXTERNALSYM SQL_STATIC_CURSOR_ATTRIBUTES1} SQL_STATIC_CURSOR_ATTRIBUTES1 = 167; {$EXTERNALSYM SQL_STATIC_CURSOR_ATTRIBUTES2} SQL_STATIC_CURSOR_ATTRIBUTES2 = 168; {$EXTERNALSYM SQL_AGGREGATE_FUNCTIONS} SQL_AGGREGATE_FUNCTIONS = 169; {$EXTERNALSYM SQL_DDL_INDEX} SQL_DDL_INDEX = 170; {$EXTERNALSYM SQL_DM_VER} SQL_DM_VER = 171; {$EXTERNALSYM SQL_INSERT_STATEMENT} SQL_INSERT_STATEMENT = 172; {$EXTERNALSYM SQL_UNION_STATEMENT} SQL_UNION_STATEMENT = SQL_UNION; {$EXTERNALSYM SQL_API_ALL_FUNCTIONS} SQL_API_ALL_FUNCTIONS = 0; {$EXTERNALSYM SQL_API_ALL_FUNCTIONS_SIZE} SQL_API_ALL_FUNCTIONS_SIZE = 100; {$EXTERNALSYM SQL_API_ODBC3_ALL_FUNCTIONS} SQL_API_ODBC3_ALL_FUNCTIONS = 999; {$EXTERNALSYM SQL_API_ODBC3_ALL_FUNCTIONS_SIZE} SQL_API_ODBC3_ALL_FUNCTIONS_SIZE = 250; {$EXTERNALSYM SQL_AT_ADD_COLUMN_SINGLE} SQL_AT_ADD_COLUMN_SINGLE = $00000020; {$EXTERNALSYM SQL_AT_ADD_COLUMN_DEFAULT} SQL_AT_ADD_COLUMN_DEFAULT = $00000040; {$EXTERNALSYM SQL_AT_ADD_COLUMN_COLLATION} SQL_AT_ADD_COLUMN_COLLATION = $00000080; {$EXTERNALSYM SQL_AT_SET_COLUMN_DEFAULT} SQL_AT_SET_COLUMN_DEFAULT = $00000100; {$EXTERNALSYM SQL_AT_DROP_COLUMN_DEFAULT} SQL_AT_DROP_COLUMN_DEFAULT = $00000200; {$EXTERNALSYM SQL_AT_DROP_COLUMN_CASCADE} SQL_AT_DROP_COLUMN_CASCADE = $00000400; {$EXTERNALSYM SQL_AT_DROP_COLUMN_RESTRICT} SQL_AT_DROP_COLUMN_RESTRICT = $00000800; {$EXTERNALSYM SQL_AT_ADD_TABLE_CONSTRAINT} SQL_AT_ADD_TABLE_CONSTRAINT = $00001000; {$EXTERNALSYM SQL_AT_DROP_TABLE_CONSTRAINT_CASCADE} SQL_AT_DROP_TABLE_CONSTRAINT_CASCADE = $00002000; {$EXTERNALSYM SQL_AT_DROP_TABLE_CONSTRAINT_RESTRICT} SQL_AT_DROP_TABLE_CONSTRAINT_RESTRICT = $00004000; {$EXTERNALSYM SQL_AT_CONSTRAINT_NAME_DEFINITION} SQL_AT_CONSTRAINT_NAME_DEFINITION = $00008000; {$EXTERNALSYM SQL_AT_CONSTRAINT_INITIALLY_DEFERRED} SQL_AT_CONSTRAINT_INITIALLY_DEFERRED = $00010000; {$EXTERNALSYM SQL_AT_CONSTRAINT_INITIALLY_IMMEDIATE} SQL_AT_CONSTRAINT_INITIALLY_IMMEDIATE = $00020000; {$EXTERNALSYM SQL_AT_CONSTRAINT_DEFERRABLE} SQL_AT_CONSTRAINT_DEFERRABLE = $00040000; {$EXTERNALSYM SQL_AT_CONSTRAINT_NON_DEFERRABLE} SQL_AT_CONSTRAINT_NON_DEFERRABLE = $00080000; //{$EXTERNALSYM SQL_CVT_CHAR} //SQL_CVT_CHAR = $00000001; //{$EXTERNALSYM SQL_CVT_NUMERIC} //SQL_CVT_NUMERIC = $00000002; //{$EXTERNALSYM SQL_CVT_DECIMAL} //SQL_CVT_DECIMAL = $00000004; //{$EXTERNALSYM SQL_CVT_INTEGER} //SQL_CVT_INTEGER = $00000008; //{$EXTERNALSYM SQL_CVT_SMALLINT} //SQL_CVT_SMALLINT = $00000010; //{$EXTERNALSYM SQL_CVT_FLOAT} //SQL_CVT_FLOAT = $00000020; //{$EXTERNALSYM SQL_CVT_REAL} //SQL_CVT_REAL = $00000040; //{$EXTERNALSYM SQL_CVT_DOUBLE} //SQL_CVT_DOUBLE = $00000080; //{$EXTERNALSYM SQL_CVT_VARCHAR} //SQL_CVT_VARCHAR = $00000100; //{$EXTERNALSYM SQL_CVT_LONGVARCHAR} //SQL_CVT_LONGVARCHAR = $00000200; //{$EXTERNALSYM SQL_CVT_BINARY} //SQL_CVT_BINARY = $00000400; //{$EXTERNALSYM SQL_CVT_VARBINARY} //SQL_CVT_VARBINARY = $00000800; //{$EXTERNALSYM SQL_CVT_BIT} //SQL_CVT_BIT = $00001000; //{$EXTERNALSYM SQL_CVT_TINYINT} //SQL_CVT_TINYINT = $00002000; //{$EXTERNALSYM SQL_CVT_BIGINT} //SQL_CVT_BIGINT = $00004000; //{$EXTERNALSYM SQL_CVT_DATE} //SQL_CVT_DATE = $00008000; //{$EXTERNALSYM SQL_CVT_TIME} //SQL_CVT_TIME = $00010000; //{$EXTERNALSYM SQL_CVT_TIMESTAMP} //SQL_CVT_TIMESTAMP = $00020000; //{$EXTERNALSYM SQL_CVT_LONGVARBINARY} //SQL_CVT_LONGVARBINARY = $00040000; //{$EXTERNALSYM SQL_CVT_INTERVAL_YEAR_MONTH} //SQL_CVT_INTERVAL_YEAR_MONTH = $00080000; //{$EXTERNALSYM SQL_CVT_INTERVAL_DAY_TIME} //SQL_CVT_INTERVAL_DAY_TIME = $00100000; //{$EXTERNALSYM SQL_CVT_WCHAR} //SQL_CVT_WCHAR = $00200000; //{$EXTERNALSYM SQL_CVT_WLONGVARCHAR} //SQL_CVT_WLONGVARCHAR = $00400000; //{$EXTERNALSYM SQL_CVT_WVARCHAR} //SQL_CVT_WVARCHAR = $00800000; {$EXTERNALSYM SQL_DESC_ARRAY_SIZE} SQL_DESC_ARRAY_SIZE = 20; {$EXTERNALSYM SQL_DESC_ARRAY_STATUS_PTR} SQL_DESC_ARRAY_STATUS_PTR = 21; {$EXTERNALSYM SQL_DESC_AUTO_UNIQUE_VALUE} SQL_DESC_AUTO_UNIQUE_VALUE = SQL_COLUMN_AUTO_INCREMENT; {$EXTERNALSYM SQL_DESC_BASE_COLUMN_NAME} SQL_DESC_BASE_COLUMN_NAME = 22; {$EXTERNALSYM SQL_DESC_BASE_TABLE_NAME} SQL_DESC_BASE_TABLE_NAME = 23; {$EXTERNALSYM SQL_DESC_BIND_OFFSET_PTR} SQL_DESC_BIND_OFFSET_PTR = 24; {$EXTERNALSYM SQL_DESC_BIND_TYPE} SQL_DESC_BIND_TYPE = 25; {$EXTERNALSYM SQL_DESC_CASE_SENSITIVE} SQL_DESC_CASE_SENSITIVE = SQL_COLUMN_CASE_SENSITIVE; {$EXTERNALSYM SQL_DESC_CATALOG_NAME} SQL_DESC_CATALOG_NAME = SQL_COLUMN_QUALIFIER_NAME; {$EXTERNALSYM SQL_DESC_CONCISE_TYPE} SQL_DESC_CONCISE_TYPE = SQL_COLUMN_TYPE; {$EXTERNALSYM SQL_DESC_DATETIME_INTERVAL_PRECISION} SQL_DESC_DATETIME_INTERVAL_PRECISION = 26; {$EXTERNALSYM SQL_DESC_DISPLAY_SIZE} SQL_DESC_DISPLAY_SIZE = SQL_COLUMN_DISPLAY_SIZE; {$EXTERNALSYM SQL_DESC_FIXED_PREC_SCALE} SQL_DESC_FIXED_PREC_SCALE = SQL_COLUMN_MONEY; {$EXTERNALSYM SQL_DESC_LABEL} SQL_DESC_LABEL = SQL_COLUMN_LABEL; {$EXTERNALSYM SQL_DESC_LITERAL_PREFIX} SQL_DESC_LITERAL_PREFIX = 27; {$EXTERNALSYM SQL_DESC_LITERAL_SUFFIX} SQL_DESC_LITERAL_SUFFIX = 28; {$EXTERNALSYM SQL_DESC_LOCAL_TYPE_NAME} SQL_DESC_LOCAL_TYPE_NAME = 29; {$EXTERNALSYM SQL_DESC_MAXIMUM_SCALE} SQL_DESC_MAXIMUM_SCALE = 30; {$EXTERNALSYM SQL_DESC_MINIMUM_SCALE} SQL_DESC_MINIMUM_SCALE = 31; {$EXTERNALSYM SQL_DESC_NUM_PREC_RADIX} SQL_DESC_NUM_PREC_RADIX = 32; {$EXTERNALSYM SQL_DESC_PARAMETER_TYPE} SQL_DESC_PARAMETER_TYPE = 33; {$EXTERNALSYM SQL_DESC_ROWS_PROCESSED_PTR} SQL_DESC_ROWS_PROCESSED_PTR = 34; {$EXTERNALSYM SQL_DESC_SCHEMA_NAME} SQL_DESC_SCHEMA_NAME = SQL_COLUMN_OWNER_NAME; {$EXTERNALSYM SQL_DESC_SEARCHABLE} SQL_DESC_SEARCHABLE = SQL_COLUMN_SEARCHABLE; {$EXTERNALSYM SQL_DESC_TYPE_NAME} SQL_DESC_TYPE_NAME = SQL_COLUMN_TYPE_NAME; {$EXTERNALSYM SQL_DESC_TABLE_NAME} SQL_DESC_TABLE_NAME = SQL_COLUMN_TABLE_NAME; {$EXTERNALSYM SQL_DESC_UNSIGNED} SQL_DESC_UNSIGNED = SQL_COLUMN_UNSIGNED; {$EXTERNALSYM SQL_DESC_UPDATABLE} SQL_DESC_UPDATABLE = SQL_COLUMN_UPDATABLE; {$EXTERNALSYM SQL_DESC_COUNT} SQL_DESC_COUNT = 1001; {$EXTERNALSYM SQL_DESC_TYPE} SQL_DESC_TYPE = 1002; {$EXTERNALSYM SQL_DESC_LENGTH} SQL_DESC_LENGTH = 1003; {$EXTERNALSYM SQL_DESC_OCTET_LENGTH_PTR} SQL_DESC_OCTET_LENGTH_PTR = 1004; {$EXTERNALSYM SQL_DESC_PRECISION} SQL_DESC_PRECISION = 1005; {$EXTERNALSYM SQL_DESC_SCALE} SQL_DESC_SCALE = 1006; {$EXTERNALSYM SQL_DESC_DATETIME_INTERVAL_CODE} SQL_DESC_DATETIME_INTERVAL_CODE = 1007; {$EXTERNALSYM SQL_DESC_NULLABLE} SQL_DESC_NULLABLE = 1008; {$EXTERNALSYM SQL_DESC_INDICATOR_PTR} SQL_DESC_INDICATOR_PTR = 1009; {$EXTERNALSYM SQL_DESC_DATA_PTR} SQL_DESC_DATA_PTR = 1010; {$EXTERNALSYM SQL_DESC_NAME} SQL_DESC_NAME = 1011; {$EXTERNALSYM SQL_DESC_UNNAMED} SQL_DESC_UNNAMED = 1012; {$EXTERNALSYM SQL_DESC_OCTET_LENGTH} SQL_DESC_OCTET_LENGTH = 1013; {$EXTERNALSYM SQL_DESC_ALLOC_TYPE} SQL_DESC_ALLOC_TYPE = 1099; {$EXTERNALSYM SQL_PT_UNKNOWN} SQL_PT_UNKNOWN = 0; {$EXTERNALSYM SQL_PT_PROCEDURE} SQL_PT_PROCEDURE = 1; {$EXTERNALSYM SQL_PT_FUNCTION} SQL_PT_FUNCTION = 2; {$EXTERNALSYM SQL_BIND_BY_COLUMN} SQL_BIND_BY_COLUMN = 0; {$EXTERNALSYM SQL_BIND_TYPE_DEFAULT} SQL_BIND_TYPE_DEFAULT = SQL_BIND_BY_COLUMN; {$EXTERNALSYM SQL_DRIVER_NOPROMPT} SQL_DRIVER_NOPROMPT = 0; {$EXTERNALSYM SQL_DRIVER_COMPLETE} SQL_DRIVER_COMPLETE = 1; {$EXTERNALSYM SQL_DRIVER_PROMPT} SQL_DRIVER_PROMPT = 2; {$EXTERNALSYM SQL_DRIVER_COMPLETE_REQUIRED} SQL_DRIVER_COMPLETE_REQUIRED = 3; // supported SQLFetchScroll FetchOrientation's SQL_CA1_NEXT = $00000001; SQL_CA1_ABSOLUTE = $00000002; SQL_CA1_RELATIVE = $00000004; SQL_CA1_BOOKMARK = $00000008; // supported SQLSetPos LockType's SQL_CA1_LOCK_NO_CHANGE = $00000040; SQL_CA1_LOCK_EXCLUSIVE = $00000080; SQL_CA1_LOCK_UNLOCK = $00000100; // supported SQLSetPos Operations SQL_CA1_POS_POSITION = $00000200; SQL_CA1_POS_UPDATE = $00000400; SQL_CA1_POS_DELETE = $00000800; SQL_CA1_POS_REFRESH = $00001000; // positioned updates and deletes SQL_CA1_POSITIONED_UPDATE = $00002000; SQL_CA1_POSITIONED_DELETE = $00004000; SQL_CA1_SELECT_FOR_UPDATE = $00008000; // supported SQLBulkOperations operations SQL_CA1_BULK_ADD = $00010000; SQL_CA1_BULK_UPDATE_BY_BOOKMARK = $00020000; SQL_CA1_BULK_DELETE_BY_BOOKMARK = $00040000; SQL_CA1_BULK_FETCH_BY_BOOKMARK = $00080000; // supported values for SQL_ATTR_SCROLL_CONCURRENCY SQL_CA2_READ_ONLY_CONCURRENCY = $00000001; SQL_CA2_LOCK_CONCURRENCY = $00000002; SQL_CA2_OPT_ROWVER_CONCURRENCY = $00000004; SQL_CA2_OPT_VALUES_CONCURRENCY = $00000008; // sensitivity of the cursor to its own inserts, deletes, and updates SQL_CA2_SENSITIVITY_ADDITIONS = $00000010; SQL_CA2_SENSITIVITY_DELETIONS = $00000020; SQL_CA2_SENSITIVITY_UPDATES = $00000040; // semantics of SQL_ATTR_MAX_ROWS SQL_CA2_MAX_ROWS_SELECT = $00000080; SQL_CA2_MAX_ROWS_INSERT = $00000100; SQL_CA2_MAX_ROWS_DELETE = $00000200; SQL_CA2_MAX_ROWS_UPDATE = $00000400; SQL_CA2_MAX_ROWS_CATALOG = $00000800; SQL_CA2_MAX_ROWS_AFFECTS_ALL = SQL_CA2_MAX_ROWS_SELECT or SQL_CA2_MAX_ROWS_INSERT or SQL_CA2_MAX_ROWS_DELETE or SQL_CA2_MAX_ROWS_UPDATE or SQL_CA2_MAX_ROWS_CATALOG; // semantics of SQL_DIAG_CURSOR_ROW_COUNT SQL_CA2_CRC_EXACT = $00001000; SQL_CA2_CRC_APPROXIMATE = $00002000; // the kinds of positioned statements that can be simulated SQL_CA2_SIMULATE_NON_UNIQUE = $00004000; SQL_CA2_SIMULATE_TRY_UNIQUE = $00008000; SQL_CA2_SIMULATE_UNIQUE = $00010000; // SQL_ODBC_API_CONFORMANCE values SQL_OAC_NONE = $0000; SQL_OAC_LEVEL1 = $0001; SQL_OAC_LEVEL2 = $0002; // SQL_ODBC_SAG_CLI_CONFORMANCE values SQL_OSCC_NOT_COMPLIANT = $0000; SQL_OSCC_COMPLIANT = $0001; // SQL_ODBC_SQL_CONFORMANCE values SQL_OSC_MINIMUM = $0000; SQL_OSC_CORE = $0001; SQL_OSC_EXTENDED = $0002; // SQL_CONCAT_NULL_BEHAVIOR values SQL_CB_NULL = $0000; SQL_CB_NON_NULL = $0001; // SQL_SCROLL_OPTIONS masks SQL_SO_FORWARD_ONLY = $00000001; SQL_SO_KEYSET_DRIVEN = $00000002; SQL_SO_DYNAMIC = $00000004; SQL_SO_MIXED = $00000008; SQL_SO_STATIC = $00000010; // SQL_FETCH_DIRECTION masks // SQL_FETCH_RESUME is no longer supported SQL_FD_FETCH_RESUME = $00000040; SQL_FD_FETCH_BOOKMARK = $00000080; // SQL_TXN_ISOLATION_OPTION masks // SQL_TXN_VERSIONING is no longer supported SQL_TXN_VERSIONING = $00000010; // SQL_CORRELATION_NAME values SQL_CN_NONE = $0000; SQL_CN_DIFFERENT = $0001; SQL_CN_ANY = $0002; // SQL_NON_NULLABLE_COLUMNS values SQL_NNC_NULL = $0000; SQL_NNC_NON_NULL = $0001; // SQL_NULL_COLLATION values SQL_NC_START = $0002; SQL_NC_END = $0004; // SQL_FILE_USAGE values SQL_FILE_NOT_SUPPORTED = $0000; SQL_FILE_TABLE = $0001; SQL_FILE_QUALIFIER = $0002; SQL_FILE_CATALOG = SQL_FILE_QUALIFIER; // SQL_GETDATA_EXTENSIONS values SQL_GD_BLOCK = $00000004; SQL_GD_BOUND = $00000008; // SQL_POSITIONED_STATEMENTS masks SQL_PS_POSITIONED_DELETE = $00000001; SQL_PS_POSITIONED_UPDATE = $00000002; SQL_PS_SELECT_FOR_UPDATE = $00000004; // SQL_GROUP_BY values SQL_GB_NOT_SUPPORTED = $0000; SQL_GB_GROUP_BY_EQUALS_SELECT = $0001; SQL_GB_GROUP_BY_CONTAINS_SELECT = $0002; SQL_GB_NO_RELATION = $0003; SQL_GB_COLLATE = $0004; // SQL_OWNER_USAGE masks SQL_OU_DML_STATEMENTS = $00000001; SQL_OU_PROCEDURE_INVOCATION = $00000002; SQL_OU_TABLE_DEFINITION = $00000004; SQL_OU_INDEX_DEFINITION = $00000008; SQL_OU_PRIVILEGE_DEFINITION = $00000010; // SQL_SCHEMA_USAGE masks SQL_SU_DML_STATEMENTS = SQL_OU_DML_STATEMENTS; SQL_SU_PROCEDURE_INVOCATION = SQL_OU_PROCEDURE_INVOCATION; SQL_SU_TABLE_DEFINITION = SQL_OU_TABLE_DEFINITION; SQL_SU_INDEX_DEFINITION = SQL_OU_INDEX_DEFINITION; SQL_SU_PRIVILEGE_DEFINITION = SQL_OU_PRIVILEGE_DEFINITION; // SQL_QUALIFIER_USAGE masks SQL_QU_DML_STATEMENTS = $00000001; SQL_QU_PROCEDURE_INVOCATION = $00000002; SQL_QU_TABLE_DEFINITION = $00000004; SQL_QU_INDEX_DEFINITION = $00000008; SQL_QU_PRIVILEGE_DEFINITION = $00000010; // SQL_CATALOG_USAGE masks SQL_CU_DML_STATEMENTS = SQL_QU_DML_STATEMENTS; SQL_CU_PROCEDURE_INVOCATION = SQL_QU_PROCEDURE_INVOCATION; SQL_CU_TABLE_DEFINITION = SQL_QU_TABLE_DEFINITION; SQL_CU_INDEX_DEFINITION = SQL_QU_INDEX_DEFINITION; SQL_CU_PRIVILEGE_DEFINITION = SQL_QU_PRIVILEGE_DEFINITION; // SQL_SUBQUERIES masks SQL_SQ_COMPARISON = $00000001; SQL_SQ_EXISTS = $00000002; SQL_SQ_IN = $00000004; SQL_SQ_QUANTIFIED = $00000008; SQL_SQ_CORRELATED_SUBQUERIES = $00000010; // SQL_UNION masks SQL_U_UNION = $00000001; SQL_U_UNION_ALL = $00000002; // SQL_BOOKMARK_PERSISTENCE values SQL_BP_CLOSE = $00000001; SQL_BP_DELETE = $00000002; SQL_BP_DROP = $00000004; SQL_BP_TRANSACTION = $00000008; SQL_BP_UPDATE = $00000010; SQL_BP_OTHER_HSTMT = $00000020; SQL_BP_SCROLL = $00000040; // SQL_STATIC_SENSITIVITY values SQL_SS_ADDITIONS = $00000001; SQL_SS_DELETIONS = $00000002; SQL_SS_UPDATES = $00000004; // SQL_VIEW values SQL_CV_CREATE_VIEW = $00000001; SQL_CV_CHECK_OPTION = $00000002; SQL_CV_CASCADED = $00000004; SQL_CV_LOCAL = $00000008; // SQL_LOCK_TYPES masks SQL_LCK_NO_CHANGE = $00000001; SQL_LCK_EXCLUSIVE = $00000002; SQL_LCK_UNLOCK = $00000004; // SQL_POS_OPERATIONS masks SQL_POS_POSITION = $00000001; SQL_POS_REFRESH = $00000002; SQL_POS_UPDATE = $00000004; SQL_POS_DELETE = $00000008; SQL_POS_ADD = $00000010; // SQL_QUALIFIER_LOCATION values SQL_QL_START = $0001; SQL_QL_END = $0002; // Column types and scopes in SQLSpecialColumns. {$EXTERNALSYM SQL_BEST_ROWID} SQL_BEST_ROWID = 1; {$EXTERNALSYM SQL_ROWVER} SQL_ROWVER = 2; // Here start return values for ODBC 3.0 SQLGetInfo // SQL_AGGREGATE_FUNCTIONS bitmasks SQL_AF_AVG = $00000001; SQL_AF_COUNT = $00000002; SQL_AF_MAX = $00000004; SQL_AF_MIN = $00000008; SQL_AF_SUM = $00000010; SQL_AF_DISTINCT = $00000020; SQL_AF_ALL = SQL_AF_AVG or SQL_AF_COUNT or SQL_AF_MAX or SQL_AF_MIN or SQL_AF_SUM or SQL_AF_DISTINCT; SQL_DATA_LEN_AT_EXEC_OFFSET = -100; // // Constants from SQÖEXT.H // // SQL_STRING_FUNCTIONS functions SQL_FN_STR_CONCAT = $00000001; SQL_FN_STR_INSERT = $00000002; SQL_FN_STR_LEFT = $00000004; SQL_FN_STR_LTRIM = $00000008; SQL_FN_STR_LENGTH = $00000010; SQL_FN_STR_LOCATE = $00000020; SQL_FN_STR_LCASE = $00000040; SQL_FN_STR_REPEAT = $00000080; SQL_FN_STR_REPLACE = $00000100; SQL_FN_STR_RIGHT = $00000200; SQL_FN_STR_RTRIM = $00000400; SQL_FN_STR_SUBSTRING = $00000800; SQL_FN_STR_UCASE = $00001000; SQL_FN_STR_ASCII = $00002000; SQL_FN_STR_CHAR = $00004000; SQL_FN_STR_DIFFERENCE = $00008000; SQL_FN_STR_LOCATE_2 = $00010000; SQL_FN_STR_SOUNDEX = $00020000; SQL_FN_STR_SPACE = $00040000; // #if (ODBCVER >= = $0300) SQL_FN_STR_BIT_LENGTH = $00080000; SQL_FN_STR_CHAR_LENGTH = $00100000; SQL_FN_STR_CHARACTER_LENGTH = $00200000; SQL_FN_STR_OCTET_LENGTH = $00400000; SQL_FN_STR_POSITION = $00800000; // SQL_NUMERIC_FUNCTIONS functions SQL_FN_NUM_ABS = $00000001; SQL_FN_NUM_ACOS = $00000002; SQL_FN_NUM_ASIN = $00000004; SQL_FN_NUM_ATAN = $00000008; SQL_FN_NUM_ATAN2 = $00000010; SQL_FN_NUM_CEILING = $00000020; SQL_FN_NUM_COS = $00000040; SQL_FN_NUM_COT = $00000080; SQL_FN_NUM_EXP = $00000100; SQL_FN_NUM_FLOOR = $00000200; SQL_FN_NUM_LOG = $00000400; SQL_FN_NUM_MOD = $00000800; SQL_FN_NUM_SIGN = $00001000; SQL_FN_NUM_SIN = $00002000; SQL_FN_NUM_SQRT = $00004000; SQL_FN_NUM_TAN = $00008000; SQL_FN_NUM_PI = $00010000; SQL_FN_NUM_RAND = $00020000; SQL_FN_NUM_DEGREES = $00040000; SQL_FN_NUM_LOG10 = $00080000; SQL_FN_NUM_POWER = $00100000; SQL_FN_NUM_RADIANS = $00200000; SQL_FN_NUM_ROUND = $00400000; SQL_FN_NUM_TRUNCATE = $00800000; // SQL_SQL92_NUMERIC_VALUE_FUNCTIONS //#if (ODBCVER >= = $0300) SQL_SNVF_BIT_LENGTH = $00000001; SQL_SNVF_CHAR_LENGTH = $00000002; SQL_SNVF_CHARACTER_LENGTH = $00000004; SQL_SNVF_EXTRACT = $00000008; SQL_SNVF_OCTET_LENGTH = $00000010; SQL_SNVF_POSITION = $00000020; // SQL_TIMEDATE_FUNCTIONS functions SQL_FN_TD_NOW = $00000001; SQL_FN_TD_CURDATE = $00000002; SQL_FN_TD_DAYOFMONTH = $00000004; SQL_FN_TD_DAYOFWEEK = $00000008; SQL_FN_TD_DAYOFYEAR = $00000010; SQL_FN_TD_MONTH = $00000020; SQL_FN_TD_QUARTER = $00000040; SQL_FN_TD_WEEK = $00000080; SQL_FN_TD_YEAR = $00000100; SQL_FN_TD_CURTIME = $00000200; SQL_FN_TD_HOUR = $00000400; SQL_FN_TD_MINUTE = $00000800; SQL_FN_TD_SECOND = $00001000; SQL_FN_TD_TIMESTAMPADD = $00002000; SQL_FN_TD_TIMESTAMPDIFF = $00004000; SQL_FN_TD_DAYNAME = $00008000; SQL_FN_TD_MONTHNAME = $00010000; //#if (ODBCVER >= = $0300) SQL_FN_TD_CURRENT_DATE = $00020000; SQL_FN_TD_CURRENT_TIME = $00040000; SQL_FN_TD_CURRENT_TIMESTAMP = $00080000; SQL_FN_TD_EXTRACT = $00100000; // SQL_SQL92_DATETIME_FUNCTIONS //#if (ODBCVER >= = $0300) SQL_SDF_CURRENT_DATE = $00000001; SQL_SDF_CURRENT_TIME = $00000002; SQL_SDF_CURRENT_TIMESTAMP = $00000004; // SQL_SYSTEM_FUNCTIONS functions SQL_FN_SYS_USERNAME = $00000001; SQL_FN_SYS_DBNAME = $00000002; SQL_FN_SYS_IFNULL = $00000004; // SQL_TIMEDATE_ADD_INTERVALS and SQL_TIMEDATE_DIFF_INTERVALS functions SQL_FN_TSI_FRAC_SECOND = $00000001; SQL_FN_TSI_SECOND = $00000002; SQL_FN_TSI_MINUTE = $00000004; SQL_FN_TSI_HOUR = $00000008; SQL_FN_TSI_DAY = $00000010; SQL_FN_TSI_WEEK = $00000020; SQL_FN_TSI_MONTH = $00000040; SQL_FN_TSI_QUARTER = $00000080; SQL_FN_TSI_YEAR = $00000100; // SQL_CONVERT_* return value bitmasks SQL_CVT_CHAR = $00000001; SQL_CVT_NUMERIC = $00000002; SQL_CVT_DECIMAL = $00000004; SQL_CVT_INTEGER = $00000008; SQL_CVT_SMALLINT = $00000010; SQL_CVT_FLOAT = $00000020; SQL_CVT_REAL = $00000040; SQL_CVT_DOUBLE = $00000080; SQL_CVT_VARCHAR = $00000100; SQL_CVT_LONGVARCHAR = $00000200; SQL_CVT_BINARY = $00000400; SQL_CVT_VARBINARY = $00000800; SQL_CVT_BIT = $00001000; SQL_CVT_TINYINT = $00002000; SQL_CVT_BIGINT = $00004000; SQL_CVT_DATE = $00008000; SQL_CVT_TIME = $00010000; SQL_CVT_TIMESTAMP = $00020000; SQL_CVT_LONGVARBINARY = $00040000; //#if (ODBCVER >= = $0300) SQL_CVT_INTERVAL_YEAR_MONTH = $00080000; SQL_CVT_INTERVAL_DAY_TIME = $00100000; SQL_CVT_WCHAR = $00200000; SQL_CVT_WLONGVARCHAR = $00400000; SQL_CVT_WVARCHAR = $00800000; SQL_PARAM_TYPE_UNKNOWN = 0; SQL_PARAM_INPUT = 1; SQL_PARAM_INPUT_OUTPUT = 2; SQL_RESULT_COL = 3; SQL_PARAM_OUTPUT = 4; SQL_RETURN_VALUE = 5; //#if (ODBCVER >= 0x0380) SQL_PARAM_INPUT_OUTPUT_STREAM = 8; SQL_PARAM_OUTPUT_STREAM = 16; //#endif // Defines for SQLProcedures (returned in the result set) //SQL_PT_UNKNOWN = 0; //SQL_PT_PROCEDURE = 1; //SQL_PT_FUNCTION = 2; // SQL_CONVERT_FUNCTIONS functions */ SQL_FN_CVT_CONVERT = $00000001; //#if (ODBCVER >= = $0300) SQL_FN_CVT_CAST = $00000002; {+// Defines for SQLForeignKeys (UPDATE_RULE and DELETE_RULE)*/ } const SQL_CASCADE = 0; const SQL_RESTRICT = 1; const SQL_SET_NULL = 2; { $IF ODBCVER >= 0x0250} const SQL_NO_ACTION = 3; const SQL_SET_DEFAULT = 4; { $ENDIF /* ODBCVER >= 0x0250*/} //{$IF ODBCVER >= 0x0300} {+// Note that the following are in a different column of SQLForeignKeys than*/ } // s. = These are for DEFERRABILITY.*/; const SQL_INITIALLY_DEFERRED = 5; const SQL_INITIALLY_IMMEDIATE = 6; const SQL_NOT_DEFERRABLE = 7; type SQLCHAR = TGMChar; SQLPCHAR = PGMChar; SQLSCHAR = {$IFDEF UNICODE}SmallInt{$ELSE}Byte{$ENDIF}; SQLDATE = TGMChar; SQLDECIMAL = TGMChar; SQLDOUBLE = double; SQLFLOAT = double; SQLINTEGER = LongInt; SQLPINTEGER = ^SQLINTEGER; SQLUINTEGER = LongWord; SQLPUINTEGER = ^SQLUINTEGER; SQLNUMERIC = TGMChar; SQLPOINTER = Pointer; SQLPPOINTER = ^SQLPOINTER; SQLREAL = single; SQLSMALLINT = Smallint; SQLPSMALLINT = ^SQLSMALLINT; SQLUSMALLINT = Word; SQLPUSMALLINT = ^SQLUSMALLINT; SQLTIME = TGMChar; SQLTIMESTAMP = TGMChar; SQLVARCHAR = TGMChar; SQLRETURN = SQLSMALLINT; SQLHANDLE = THandle; SQLPHANDLE = ^SQLHANDLE; SQLHENV = SQLHANDLE; SQLHDBC = SQLHANDLE; SQLHSTMT = SQLHANDLE; SQLHDESC = SQLHANDLE; RETCODE = SmallInt; {$IFDEF CPU64} SQLLEN = Int64; SQLULEN = QWord; SQLSETPOSIROW = SQLULEN; {$ELSE} SQLLEN = LongInt; SQLULEN = LongWord; SQLSETPOSIROW = SQLUSMALLINT; {$ENDIF} PSQLLEN = ^SQLLEN; PSQLULEN = ^SQLULEN; SQLHWND = type THandle; PSQL_DATE_STRUCT = ^SQL_DATE_STRUCT; SQL_DATE_STRUCT = packed record year: SQLSMALLINT; month: SQLUSMALLINT; day: SQLUSMALLINT; end; PSQL_TIME_STRUCT = ^SQL_TIME_STRUCT; SQL_TIME_STRUCT = packed record hour: SQLUSMALLINT; minute: SQLUSMALLINT; second: SQLUSMALLINT; end; PSQL_SS_TIME2_STRUCT = ^SQL_SS_TIME2_STRUCT; SQL_SS_TIME2_STRUCT = packed record hour: SQLUSMALLINT; minute: SQLUSMALLINT; second: SQLUSMALLINT; fraction: SQLUINTEGER; end; PSQL_SS_TIMESTAMPOFFSET_STRUCT = ^SQL_SS_TIMESTAMPOFFSET_STRUCT; SQL_SS_TIMESTAMPOFFSET_STRUCT = packed record year: SQLSMALLINT; month: SQLUSMALLINT; day: SQLUSMALLINT; hour: SQLUSMALLINT; minute: SQLUSMALLINT; second: SQLUSMALLINT; fraction: SQLUINTEGER; timezone_hour: SQLSMALLINT; timezone_minute: SQLSMALLINT; end; PSQL_TIMESTAMP_STRUCT = ^SQL_TIMESTAMP_STRUCT; SQL_TIMESTAMP_STRUCT = packed record year: SQLSMALLINT; month: SQLUSMALLINT; day: SQLUSMALLINT; hour: SQLUSMALLINT; minute: SQLUSMALLINT; second: SQLUSMALLINT; fraction: SQLUINTEGER; end; PSQL_YEAR_MONTH_STRUCT = ^SQL_YEAR_MONTH_STRUCT; SQL_YEAR_MONTH_STRUCT = packed record year: SQLUINTEGER; month: SQLUINTEGER; end; PSQL_DAY_SECOND_STRUCT = ^SQL_DAY_SECOND_STRUCT; SQL_DAY_SECOND_STRUCT = packed record day: SQLUINTEGER; hour: SQLUINTEGER; minute: SQLUINTEGER; second: SQLUINTEGER; fraction: SQLUINTEGER; end; SQLINTERVAL = LongInt; PSQL_INTERVAL_STRUCT = ^SQL_INTERVAL_STRUCT; SQL_INTERVAL_STRUCT = packed record interval_type: SQLINTERVAL; interval_sign: SQLSMALLINT; case LongInt of 0: (year_month: SQL_YEAR_MONTH_STRUCT); 1: (day_second: SQL_DAY_SECOND_STRUCT); end; ODBCINT64 = Int64; SQLBIGINT = Int64; SQLUBIGINT = Int64; PSQL_NUMERIC_STRUCT = ^SQL_NUMERIC_STRUCT; SQL_NUMERIC_STRUCT = packed record precision: SQLCHAR; scale: SQLSCHAR; sign: SQLCHAR; { 1 if positive, 0 if negative } val: array [0..SQL_MAX_NUMERIC_LEN-1] of SQLCHAR; end; PSQLErrorDesc = ^RSQLErrorDesc; RSQLErrorDesc = record ReturnCode: SQLRETURN; Code: TGMString; //Code: array [1..5] of TGMChar; Origin: TGMString; SubClassOrigin: TGMString; Msg: TGMString; Connection: TGMString; Server: TGMString; NativeCode: SQLINTEGER; end; BOOKMARK = SQLULEN; SQLWCHAR = WideChar; SQLGUID = TGUID; TOdbcVersion = (odbc2x, odbc3x); TOdbcConnectionPooling = (cpOff, cpOnePoolPerDriver, cpOnePoolPerEnvironment); TOdbcConnectionPoolSelectStrategy = (ssExactMatch, ssRelaxedMatch); TCursorOrigin = (coUseODBCCursorsIfNeeded, coUseODBCCursors, coUseDriverCursors); TTransactionIsolation = (tiReadUncommitted, tiReadCommitted, tiRepeatableRead, tiSerializable); TTransactionIsolations = set of TTransactionIsolation; TUpdateStrategy = (usReadOnly, usMinimalLock, usCompareRecordVersionBeforeWrite, usCompareValuesBeforeWrite, usUseDriverDefault); TCursorSensitivity = (csUnspecified, csInsensitive, csReflectChanges, csUseDriverDefault); TDSNKind = (dsnUser, dsnSystem); TPositionedUpdateSimulation = (pusAllowNonUniqueUpdate, pusTryUniqueUpdate, pusGuaranteeUniqueUpdate, pusUseDriverDefault); TRowStatusArray = array [0..High(Word)] of SQLSMALLINT; PRowStatusArray = ^TRowStatusArray; const { -------------------------------------------- } { ---- Const not defined by ODBC Standard ---- } { -------------------------------------------- } cODBCFractionFactor = 1000000; cInvalidHandleType = -1; cOdbcBookmarkColPos = 0; cOdbcInvalidHandle = SQL_NULL_HANDLE; cSqlDefaultTransactionIsolation = [tiReadCommitted]; cOdbcSeverity: array [Boolean] of TGMSeverityLevel = (svInformation, svError); cOdbcErrGeneral = 'HY000'; cOdbcErrOptionalNotImplemented = 'HYC00'; { --------------------------- } { ---- API Routine Names ---- } { --------------------------- } cStrSQLAllocConnect = 'SQLAllocConnect'; cStrSQLAllocEnv = 'SQLAllocEnv'; cStrSQLAllocHandle = 'SQLAllocHandle'; cStrSQLAllocStmt = 'SQLAllocStmt'; cStrSQLBindCol = 'SQLBindCol'; cStrSQLBindParam = 'SQLBindParam'; cStrSQLCancel = 'SQLCancel'; cStrSQLCloseCursor = 'SQLCloseCursor'; cStrSQLColAttribute = {$IFDEF UNICODE}'SQLColAttributeW'{$ELSE}'SQLColAttributeA'{$ENDIF}; cStrSQLColumns = {$IFDEF UNICODE}'SQLColumnsW'{$ELSE}'SQLColumnsA'{$ENDIF}; cStrSQLConnect = {$IFDEF UNICODE}'SQLConnectW'{$ELSE}'SQLConnectA'{$ENDIF}; cStrSQLCopyDesc = 'SQLCopyDesc'; cStrSQLDataSources = {$IFDEF UNICODE}'SQLDataSourcesW'{$ELSE}'SQLDataSourcesA'{$ENDIF}; cStrSQLDescribeCol = {$IFDEF UNICODE}'SQLDescribeColW'{$ELSE}'SQLDescribeColA'{$ENDIF}; cStrSQLDisconnect = 'SQLDisconnect'; cStrSQLEndTran = 'SQLEndTran'; cStrSQLError = {$IFDEF UNICODE}'SQLErrorW'{$ELSE}'SQLErrorA'{$ENDIF}; cStrSQLExecDirect = {$IFDEF UNICODE}'SQLExecDirectW'{$ELSE}'SQLExecDirectA'{$ENDIF}; cStrSQLExecute = 'SQLExecute'; cStrSQLFetch = 'SQLFetch'; cStrSQLFetchScroll = 'SQLFetchScroll'; cStrSQLFreeConnect = 'SQLFreeConnect'; cStrSQLFreeEnv = 'SQLFreeEnv'; cStrSQLFreeHandle = 'SQLFreeHandle'; cStrSQLFreeStmt = 'SQLFreeStmt'; cStrSQLGetConnectAttr = {$IFDEF UNICODE}'SQLGetConnectAttrW'{$ELSE}'SQLGetConnectAttrA'{$ENDIF}; cStrSQLGetConnectOption = {$IFDEF UNICODE}'SQLGetConnectOptionW'{$ELSE}'SQLGetConnectOptionA'{$ENDIF}; cStrSQLGetCursorName = {$IFDEF UNICODE}'SQLGetCursorNameW'{$ELSE}'SQLGetCursorNameA'{$ENDIF}; cStrSQLGetData = 'SQLGetData'; cStrSQLGetDescField = {$IFDEF UNICODE}'SQLGetDescFieldW'{$ELSE}'SQLGetDescFieldA'{$ENDIF}; cStrSQLGetDescRec = {$IFDEF UNICODE}'SQLGetDescRecW'{$ELSE}'SQLGetDescRecA'{$ENDIF}; cStrSQLGetDiagField = {$IFDEF UNICODE}'SQLGetDiagFieldW'{$ELSE}'SQLGetDiagFieldA'{$ENDIF}; cStrSQLGetDiagRec = {$IFDEF UNICODE}'SQLGetDiagRecW'{$ELSE}'SQLGetDiagRecA'{$ENDIF}; cStrSQLGetEnvAttr = 'SQLGetEnvAttr'; cStrSQLGetFunctions = 'SQLGetFunctions'; cStrSQLGetInfo = {$IFDEF UNICODE}'SQLGetInfoW'{$ELSE}'SQLGetInfoA'{$ENDIF}; cStrSQLGetStmtAttr = {$IFDEF UNICODE}'SQLGetStmtAttrW'{$ELSE}'SQLGetStmtAttrA'{$ENDIF}; cStrSQLGetStmtOption = 'SQLGetStmtOption'; cStrSQLGetTypeInfo = {$IFDEF UNICODE}'SQLGetTypeInfoW'{$ELSE}'SQLGetTypeInfoA'{$ENDIF}; cStrSQLNumResultCols = 'SQLNumResultCols'; cStrSQLParamData = 'SQLParamData'; cStrSQLPrepare = {$IFDEF UNICODE}'SQLPrepareW'{$ELSE}'SQLPrepareA'{$ENDIF}; cStrSQLPutData = 'SQLPutData'; cStrSQLRowCount = 'SQLRowCount'; cStrSQLSetConnectAttr = {$IFDEF UNICODE}'SQLSetConnectAttrW'{$ELSE}'SQLSetConnectAttrA'{$ENDIF}; cStrSQLSetConnectOption = {$IFDEF UNICODE}'SQLSetConnectOptionW'{$ELSE}'SQLSetConnectOptionA'{$ENDIF}; cStrSQLSetCursorName = {$IFDEF UNICODE}'SQLSetCursorNameW'{$ELSE}'SQLSetCursorNameA'{$ENDIF}; cStrSQLSetDescField = {$IFDEF UNICODE}'SQLSetDescFieldW'{$ELSE}'SQLSetDescFieldA'{$ENDIF}; cStrSQLSetDescRec = 'SQLSetDescRec'; cStrSQLSetEnvAttr = 'SQLSetEnvAttr'; cStrSQLSetParam = 'SQLSetParam'; cStrSQLSetStmtAttr = {$IFDEF UNICODE}'SQLSetStmtAttrW'{$ELSE}'SQLSetStmtAttrA'{$ENDIF}; cStrSQLSetStmtOption = 'SQLSetStmtOption'; cStrSQLSpecialColumns = {$IFDEF UNICODE}'SQLSpecialColumnsW'{$ELSE}'SQLSpecialColumnsA'{$ENDIF}; cStrSQLStatistics = {$IFDEF UNICODE}'SQLStatisticsW'{$ELSE}'SQLStatisticsA'{$ENDIF}; cStrSQLTables = {$IFDEF UNICODE}'SQLTablesW'{$ELSE}'SQLTablesA'{$ENDIF}; cStrSQLTransact = 'SQLTransact'; cStrSQLDriverConnect = {$IFDEF UNICODE}'SQLDriverConnectW'{$ELSE}'SQLDriverConnectA'{$ENDIF}; cStrSQLBrowseConnect = {$IFDEF UNICODE}'SQLBrowseConnectW'{$ELSE}'SQLBrowseConnectA'{$ENDIF}; cStrSQLBulkOperations = 'SQLBulkOperations'; cStrSQLColAttributes = {$IFDEF UNICODE}'SQLColAttributesW'{$ELSE}'SQLColAttributesA'{$ENDIF}; cStrSQLColumnPrivileges = {$IFDEF UNICODE}'SQLColumnPrivilegesW'{$ELSE}'SQLColumnPrivilegesA'{$ENDIF}; cStrSQLDescribeParam = 'SQLDescribeParam'; cStrSQLExtendedFetch = 'SQLExtendedFetch'; cStrSQLForeignKeys = {$IFDEF UNICODE}'SQLForeignKeysW'{$ELSE}'SQLForeignKeysA'{$ENDIF}; cStrSQLMoreResults = 'SQLMoreResults'; cStrSQLNativeSql = {$IFDEF UNICODE}'SQLNativeSqlW'{$ELSE}'SQLNativeSqlA'{$ENDIF}; cStrSQLNumParams = 'SQLNumParams'; cStrSQLParamOptions = 'SQLParamOptions'; cStrSQLPrimaryKeys = {$IFDEF UNICODE}'SQLPrimaryKeysW'{$ELSE}'SQLPrimaryKeysA'{$ENDIF}; cStrSQLProcedureColumns = {$IFDEF UNICODE}'SQLProcedureColumnsW'{$ELSE}'SQLProcedureColumnsA'{$ENDIF}; cStrSQLProcedures = {$IFDEF UNICODE}'SQLProceduresW'{$ELSE}'SQLProceduresA'{$ENDIF}; cStrSQLSetPos = 'SQLSetPos'; cStrSQLTablePrivileges = {$IFDEF UNICODE}'SQLTablePrivilegesW'{$ELSE}'SQLTablePrivilegesA'{$ENDIF}; cStrSQLDrivers = {$IFDEF UNICODE}'SQLDriversW'{$ELSE}'SQLDriversA'{$ENDIF}; cStrSQLBindParameter = 'SQLBindParameter'; cStrSQLAllocHandleStd = 'SQLAllocHandleStd'; cStrSQLSetScrollOptions = 'SQLSetScrollOptions'; {$IF (ODBCVER >= $0400)} scSQLStructuredTypes = {$IFDEF UNICODE}'SQLStructuredTypesW'{$ELSE}'SQLStructuredTypesA'{$ENDIF}; scSQLStructuredTypeColumns = {$IFDEF UNICODE}'SQLStructuredTypeColumnsW'{$ELSE}'SQLStructuredTypeColumnsA'{$ENDIF}; {$ENDIF} //cStrTraceOpenLogFile = 'TraceOpenLogFile'; //cStrTraceCloseLogFile = 'TraceCloseLogFile'; //cStrTraceReturn = 'TraceReturn'; //cStrTraceVersion = 'TraceVersion'; { ---------------------------------- } { ---- Routines From ODBC32.DLL ---- } { ---------------------------------- } {$EXTERNALSYM SQLAllocConnect} function SQLAllocConnect(EnvironmentHandle: SQLHENV; var ConnectionHandle: SQLHDBC): SQLRETURN; stdcall; {$EXTERNALSYM SQLAllocEnv} function SQLAllocEnv(var EnvironmentHandle: SQLHENV): SQLRETURN; stdcall; {$EXTERNALSYM SQLAllocHandle} function SQLAllocHandle(HandleType: SQLSMALLINT; InputHandle: SQLHANDLE; var OutputHandle: SQLHANDLE): SQLRETURN; stdcall; {$EXTERNALSYM SQLAllocStmt} function SQLAllocStmt(ConnectionHandle: SQLHDBC; var StatementHandle: SQLHSTMT): SQLRETURN; stdcall; {$EXTERNALSYM SQLBindCol} function SQLBindCol(StatementHandle: SQLHSTMT; ColumnNumber: SQLUSMALLINT; TargetType: SQLSMALLINT; TargetValue: SQLPOINTER; BufferLength: SQLLEN; pStrLen_or_Ind: PSQLLEN): SQLRETURN; stdcall; {$EXTERNALSYM SQLBindParam} function SQLBindParam(StatementHandle: SQLHSTMT; ParameterNumber: SQLUSMALLINT; ValueType: SQLSMALLINT; ParameterType: SQLSMALLINT; ColumnSize: SQLULEN; DecimalDigits: SQLSMALLINT; ParameterValue: SQLPOINTER; StrLen_or_Ind: PSQLLEN): SQLRETURN; stdcall; {$EXTERNALSYM SQLCancel} function SQLCancel(StatementHandle: SQLHSTMT): SQLRETURN; stdcall; {$EXTERNALSYM SQLCloseCursor} function SQLCloseCursor(StatementHandle: SQLHSTMT): SQLRETURN; stdcall; {$EXTERNALSYM SQLColAttribute} function SQLColAttribute(StatementHandle: SQLHSTMT; ColumnNumber: SQLUSMALLINT; FieldIdentifier: SQLUSMALLINT; CharacterAttribute: SQLPOINTER; BufferLength: SQLSMALLINT; StringLengthPtr: SQLPSMALLINT; NumericAttribute: PSQLLEN): SQLRETURN; stdcall; {$EXTERNALSYM SQLColumns} function SQLColumns(StatementHandle: SQLHSTMT; CatalogName: SQLPCHAR; NameLength1: SQLSMALLINT; SchemaName: SQLPCHAR; NameLength2: SQLSMALLINT; TableName: SQLPCHAR; NameLength3: SQLSMALLINT; ColumnName: SQLPCHAR; NameLength4: SQLSMALLINT): SQLRETURN; stdcall; {$EXTERNALSYM SQLConnect} function SQLConnect(ConnectionHandle: SQLHDBC; ServerName: SQLPCHAR; NameLength1: SQLSMALLINT; UserName: SQLPCHAR; NameLength2: SQLSMALLINT; Authentication: SQLPCHAR; NameLength3: SQLSMALLINT): SQLRETURN; stdcall; {$EXTERNALSYM SQLCopyDesc} function SQLCopyDesc(SourceDescHandle: SQLHDESC; TargetDescHandle: SQLHDESC): SQLRETURN; stdcall; {$EXTERNALSYM SQLDataSources} function SQLDataSources(EnvironmentHandle: SQLHENV; Direction: SQLUSMALLINT; ServerName: SQLPCHAR; BufferLength1: SQLSMALLINT; var NameLength1: SQLSMALLINT; Description: SQLPCHAR; BufferLength2: SQLSMALLINT; var NameLength2: SQLSMALLINT): SQLRETURN; stdcall; {$EXTERNALSYM SQLDescribeCol} function SQLDescribeCol(StatementHandle: SQLHSTMT; ColumnNumber: SQLUSMALLINT; ColumnName: SQLPCHAR; BufferLength: SQLSMALLINT; var NameLength: SQLSMALLINT; var DataType: SQLSMALLINT; var ColumnSize: SQLULEN; var DecimalDigits: SQLSMALLINT; var Nullable: SQLSMALLINT): SQLRETURN; stdcall; {$EXTERNALSYM SQLDisconnect} function SQLDisconnect(ConnectionHandle: SQLHDBC): SQLRETURN; stdcall; {$EXTERNALSYM SQLEndTran} function SQLEndTran(HandleType: SQLSMALLINT; Handle: SQLHANDLE; CompletionType: SQLSMALLINT): SQLRETURN; stdcall; {$EXTERNALSYM SQLError} function SQLError(EnvironmentHandle: SQLHENV; ConnectionHandle: SQLHDBC; StatementHandle: SQLHSTMT; Sqlstate: SQLPCHAR; var NativeError: SQLINTEGER; MessageText: SQLPCHAR; BufferLength: SQLSMALLINT; var TextLength: SQLSMALLINT): SQLRETURN; stdcall; {$EXTERNALSYM SQLExecDirect} function SQLExecDirect(StatementHandle: SQLHSTMT; StatementText: SQLPCHAR; TextLength: SQLINTEGER): SQLRETURN; stdcall; {$EXTERNALSYM SQLExecute} function SQLExecute(StatementHandle: SQLHSTMT): SQLRETURN; stdcall; {$EXTERNALSYM SQLFetch} function SQLFetch(StatementHandle: SQLHSTMT): SQLRETURN; stdcall; {$EXTERNALSYM SQLFetchScroll} function SQLFetchScroll(StatementHandle: SQLHSTMT; FetchOrientation: SQLSMALLINT; FetchOffset: SQLLEN): SQLRETURN; stdcall; {$EXTERNALSYM SQLFreeConnect} function SQLFreeConnect(ConnectionHandle: SQLHDBC): SQLRETURN; stdcall; {$EXTERNALSYM SQLFreeEnv} function SQLFreeEnv(EnvironmentHandle: SQLHENV): SQLRETURN; stdcall; {$EXTERNALSYM SQLFreeHandle} function SQLFreeHandle(HandleType: SQLSMALLINT; Handle: SQLHANDLE): SQLRETURN; stdcall; {$EXTERNALSYM SQLFreeStmt} function SQLFreeStmt(StatementHandle: SQLHSTMT; Option: SQLUSMALLINT): SQLRETURN; stdcall; {$EXTERNALSYM SQLGetConnectAttr} function SQLGetConnectAttr(ConnectionHandle: SQLHDBC; Attribute: SQLINTEGER; Value: SQLPOINTER; BufferLength: SQLINTEGER; pStringLength: SQLPINTEGER): SQLRETURN; stdcall; {$EXTERNALSYM SQLGetConnectOption} function SQLGetConnectOption(ConnectionHandle: SQLHDBC; Option: SQLUSMALLINT; Value: SQLPOINTER): SQLRETURN; stdcall; {$EXTERNALSYM SQLGetCursorName} function SQLGetCursorName(StatementHandle: SQLHSTMT; CursorName: SQLPCHAR; BufferLength: SQLSMALLINT; var NameLength: SQLSMALLINT): SQLRETURN; stdcall; {$EXTERNALSYM SQLGetData} function SQLGetData(StatementHandle: SQLHSTMT; ColumnNumber: SQLUSMALLINT; TargetType: SQLSMALLINT; TargetValue: SQLPOINTER; BufferLength: SQLLEN; pStrLen_or_Ind: PSQLLEN): SQLRETURN; stdcall; {$EXTERNALSYM SQLGetDescField} function SQLGetDescField(DescriptorHandle: SQLHDESC; RecNumber: SQLSMALLINT; FieldIdentifier: SQLSMALLINT; Value: SQLPOINTER; BufferLength: SQLINTEGER; var StringLength: SQLINTEGER): SQLRETURN; stdcall; {$EXTERNALSYM SQLGetDescRec} function SQLGetDescRec(DescriptorHandle: SQLHDESC; RecNumber: SQLSMALLINT; Name: SQLPCHAR; BufferLength: SQLSMALLINT; StringLength: SQLPSMALLINT; Type_: SQLPSMALLINT; SubType: SQLPSMALLINT; Length: PSQLLEN; Precision: SQLPSMALLINT; Scale: SQLPSMALLINT; Nullable: SQLPSMALLINT): SQLRETURN; stdcall; {$EXTERNALSYM SQLGetDiagField} function SQLGetDiagField(HandleType: SQLSMALLINT; Handle: SQLHANDLE; RecNumber: SQLSMALLINT; DiagIdentifier: SQLSMALLINT; DiagInfo: SQLPOINTER; BufferLength: SQLSMALLINT; PStringLength: SQLPSMALLINT): SQLRETURN; stdcall; {$EXTERNALSYM SQLGetDiagRec} function SQLGetDiagRec(HandleType: SQLSMALLINT; Handle: SQLHANDLE; RecNumber: SQLSMALLINT; Sqlstate: SQLPCHAR; var NativeError: SQLINTEGER; MessageText: SQLPCHAR; BufferLength: SQLSMALLINT; var TextLength: SQLSMALLINT): SQLRETURN; stdcall; {$EXTERNALSYM SQLGetEnvAttr} function SQLGetEnvAttr(EnvironmentHandle: SQLHENV; Attribute: SQLINTEGER; Value: SQLPOINTER; BufferLength: SQLINTEGER; pStringLength: SQLPINTEGER): SQLRETURN; stdcall; {$EXTERNALSYM SQLGetFunctions} function SQLGetFunctions(ConnectionHandle: SQLHDBC; FunctionId: SQLUSMALLINT; var Supported: SQLUSMALLINT): SQLRETURN; stdcall; {$EXTERNALSYM SQLGetInfo} function SQLGetInfo(ConnectionHandle: SQLHDBC; InfoType: SQLUSMALLINT; InfoValue: SQLPOINTER; BufferLength: SQLSMALLINT; pStringLength: SQLPSMALLINT): SQLRETURN; stdcall; {$EXTERNALSYM SQLGetStmtAttr} function SQLGetStmtAttr(StatementHandle: SQLHSTMT; Attribute: SQLINTEGER; Value: SQLPOINTER; BufferLength: SQLINTEGER; pStringLength: SQLPINTEGER): SQLRETURN; stdcall; {$EXTERNALSYM SQLGetStmtOption} function SQLGetStmtOption(StatementHandle: SQLHSTMT; Option: SQLUSMALLINT; Value: SQLPOINTER): SQLRETURN; stdcall; {$EXTERNALSYM SQLGetTypeInfo} function SQLGetTypeInfo(StatementHandle: SQLHSTMT; DataType: SQLSMALLINT): SQLRETURN; stdcall; {$EXTERNALSYM SQLNumResultCols} function SQLNumResultCols(StatementHandle: SQLHSTMT; var ColumnCount: SQLSMALLINT): SQLRETURN; stdcall; {$EXTERNALSYM SQLParamData} function SQLParamData(StatementHandle: SQLHSTMT; var Value: SQLPOINTER): SQLRETURN; stdcall; {$EXTERNALSYM SQLPrepare} function SQLPrepare(StatementHandle: SQLHSTMT; StatementText: SQLPCHAR; TextLength: SQLINTEGER): SQLRETURN; stdcall; {$EXTERNALSYM SQLPutData} function SQLPutData(StatementHandle: SQLHSTMT; Data: SQLPOINTER; StrLen_or_Ind: SQLLEN): SQLRETURN; stdcall; {$EXTERNALSYM SQLRowCount} function SQLRowCount(StatementHandle: SQLHSTMT; var RowCount: SQLLEN): SQLRETURN; stdcall; {$EXTERNALSYM SQLSetConnectAttr} function SQLSetConnectAttr(ConnectionHandle: SQLHDBC; Attribute: SQLINTEGER; Value: SQLPOINTER; StringLength: SQLINTEGER): SQLRETURN; stdcall; {$EXTERNALSYM SQLSetConnectOption} function SQLSetConnectOption(ConnectionHandle: SQLHDBC; Option: SQLUSMALLINT; Value: SQLULEN): SQLRETURN; stdcall; {$EXTERNALSYM SQLSetCursorName} function SQLSetCursorName(StatementHandle: SQLHSTMT; CursorName: SQLPCHAR; NameLength: SQLSMALLINT): SQLRETURN; stdcall; {$EXTERNALSYM SQLSetDescField} function SQLSetDescField(DescriptorHandle: SQLHDESC; RecNumber: SQLSMALLINT; FieldIdentifier: SQLSMALLINT; Value: SQLPOINTER; BufferLength: SQLINTEGER): SQLRETURN; stdcall; {$EXTERNALSYM SQLSetDescRec} function SQLSetDescRec(DescriptorHandle: SQLHDESC; RecNumber: SQLSMALLINT; Type_: SQLSMALLINT; SubType: SQLSMALLINT; Length: SQLLEN; Precision: SQLSMALLINT; Scale: SQLSMALLINT; Data: SQLPOINTER; StringLength: PSQLLEN; Indicator: PSQLLEN): SQLRETURN; stdcall; {$EXTERNALSYM SQLSetEnvAttr} function SQLSetEnvAttr(EnvironmentHandle: SQLHENV; Attribute: SQLINTEGER; Value: SQLPOINTER; StringLength: SQLINTEGER): SQLRETURN; stdcall; {$EXTERNALSYM SQLSetParam} function SQLSetParam(StatementHandle: SQLHSTMT; ParameterNumber: SQLUSMALLINT; ValueType: SQLSMALLINT; ParameterType: SQLSMALLINT; LengthPrecision: SQLULEN; ParameterScale: SQLSMALLINT; ParameterValue: SQLPOINTER; StrLen_or_Ind: PSQLLEN): SQLRETURN; stdcall; {$EXTERNALSYM SQLSetStmtAttr} function SQLSetStmtAttr(StatementHandle: SQLHSTMT; Attribute: SQLINTEGER; Value: SQLPOINTER; StringLength: SQLINTEGER): SQLRETURN; stdcall; {$EXTERNALSYM SQLSetStmtOption} function SQLSetStmtOption(StatementHandle: SQLHSTMT; Option: SQLUSMALLINT; Value: SQLULEN): SQLRETURN; stdcall; {$EXTERNALSYM SQLSpecialColumns} function SQLSpecialColumns(StatementHandle: SQLHSTMT; IdentifierType: SQLUSMALLINT; CatalogName: SQLPCHAR; NameLength1: SQLSMALLINT; SchemaName: SQLPCHAR; NameLength2: SQLSMALLINT; TableName: SQLPCHAR; NameLength3: SQLSMALLINT; Scope: SQLUSMALLINT; Nullable: SQLUSMALLINT): SQLRETURN; stdcall; {$EXTERNALSYM SQLStatistics} function SQLStatistics(StatementHandle: SQLHSTMT; CatalogName: SQLPCHAR; NameLength1: SQLSMALLINT; SchemaName: SQLPCHAR; NameLength2: SQLSMALLINT; TableName: SQLPCHAR; NameLength3: SQLSMALLINT; Unique: SQLUSMALLINT; Reserved: SQLUSMALLINT): SQLRETURN; stdcall; {$EXTERNALSYM SQLTables} function SQLTables(StatementHandle: SQLHSTMT; CatalogName: SQLPCHAR; NameLength1: SQLSMALLINT; SchemaName: SQLPCHAR; NameLength2: SQLSMALLINT; TableName: SQLPCHAR; NameLength3: SQLSMALLINT; TableType: SQLPCHAR; NameLength4: SQLSMALLINT): SQLRETURN; stdcall; {$EXTERNALSYM SQLTransact} function SQLTransact(EnvironmentHandle: SQLHENV; ConnectionHandle: SQLHDBC; CompletionType: SQLUSMALLINT): SQLRETURN; stdcall; { --------------------------------- } { ---- Routines from SQLEXT.H ---- } { --------------------------------- } {$EXTERNALSYM SQLDriverConnect} function SQLDriverConnect( hdbc: SQLHDBC; hwnd: SQLHWND; szConnStrIn: SQLPCHAR; cbConnStrIn: SQLSMALLINT; szConnStrOut: SQLPCHAR; cbConnStrOutMax: SQLSMALLINT; pcbConnStrOut: SQLPSMALLINT; fDriverCompletion: SQLUSMALLINT): SQLRETURN; stdcall; {$EXTERNALSYM SQLBrowseConnect} function SQLBrowseConnect( hdbc: SQLHDBC; szConnStrIn: SQLPCHAR; cbConnStrIn: SQLSMALLINT; szConnStrOut: SQLPCHAR; cbConnStrOutMax: SQLSMALLINT; pcbConnStrOut: SQLPSMALLINT): SQLRETURN; stdcall; {$EXTERNALSYM SQLBulkOperations} function SQLBulkOperations( StatementHandle: SQLHSTMT; Operation: SQLSMALLINT): SQLRETURN; stdcall; {$EXTERNALSYM SQLColAttributes} function SQLColAttributes( hstmt: SQLHSTMT; icol: SQLUSMALLINT; fDescType: SQLUSMALLINT; rgbDesc: SQLPOINTER; cbDescMax: SQLSMALLINT; pcbDesc: SQLPSMALLINT; pfDesc: PSQLLEN): SQLRETURN; stdcall; {$EXTERNALSYM SQLColumnPrivileges} function SQLColumnPrivileges( hstmt: SQLHSTMT; szCatalogName: SQLPCHAR; cbCatalogName: SQLSMALLINT; szSchemaName: SQLPCHAR; cbSchemaName: SQLSMALLINT; szTableName: SQLPCHAR; cbTableName: SQLSMALLINT; szColumnName: SQLPCHAR; cbColumnName: SQLSMALLINT): SQLRETURN; stdcall; {$EXTERNALSYM SQLDescribeParam} function SQLDescribeParam( StatementHandle: SQLHSTMT; ParameterNumber: SQLUSMALLINT; DataTypePtr: SQLPSMALLINT; ParameterSizePtr: PSQLULEN; DecimalDigitsPtr: SQLPSMALLINT; NullablePtr: SQLPSMALLINT): SQLRETURN; stdcall; {$EXTERNALSYM SQLExtendedFetch} function SQLExtendedFetch( StatementHandle: SQLHSTMT; FetchOrientation: SQLUSMALLINT; FetchOffset: SQLLEN; RowCountPtr: PSQLULEN; RowStatusArray: SQLPUSMALLINT): SQLRETURN; stdcall; {$EXTERNALSYM SQLForeignKeys} function SQLForeignKeys( hstmt: SQLHSTMT; szPkCatalogName: SQLPCHAR; cbPkCatalogName: SQLSMALLINT; szPkSchemaName: SQLPCHAR; cbPkSchemaName: SQLSMALLINT; szPkTableName: SQLPCHAR; cbPkTableName: SQLSMALLINT; szFkCatalogName: SQLPCHAR; cbFkCatalogName: SQLSMALLINT; szFkSchemaName: SQLPCHAR; cbFkSchemaName: SQLSMALLINT; szFkTableName: SQLPCHAR; cbFkTableName: SQLSMALLINT): SQLRETURN; stdcall; {$EXTERNALSYM SQLMoreResults} function SQLMoreResults(hstmt: SQLHSTMT): SQLRETURN; stdcall; {$EXTERNALSYM SQLNativeSql} function SQLNativeSql( hdbc: SQLHDBC; szSqlStrIn: SQLPCHAR; cbSqlStrIn: SQLINTEGER; szSqlStr: SQLPCHAR; cbSqlStrMax: SQLINTEGER; pcbSqlStr: SQLPINTEGER): SQLRETURN; stdcall; {$EXTERNALSYM SQLNumParams} function SQLNumParams( StatementHandle: SQLHSTMT; pcpar: SQLPSMALLINT): SQLRETURN; stdcall; {$EXTERNALSYM SQLParamOptions} function SQLParamOptions( hstmt: SQLHSTMT; crow: SQLULEN; pirow: PSQLULEN): SQLRETURN; stdcall; {$EXTERNALSYM SQLPrimaryKeys} function SQLPrimaryKeys( StatementHandle: SQLHSTMT; szCatalogName: SQLPCHAR; cbCatalogName: SQLSMALLINT; szSchemaName: SQLPCHAR; cbSchemaName: SQLSMALLINT; szTableName: SQLPCHAR; cbTableName: SQLSMALLINT): SQLRETURN; stdcall; {$EXTERNALSYM SQLProcedureColumns} function SQLProcedureColumns( StatementHandle: SQLHSTMT; szCatalogName: SQLPCHAR; cbCatalogName: SQLSMALLINT; szSchemaName: SQLPCHAR; cbSchemaName: SQLSMALLINT; szProcName: SQLPCHAR; cbProcName: SQLSMALLINT; szColumnName: SQLPCHAR; cbColumnName: SQLSMALLINT): SQLRETURN; stdcall; {$EXTERNALSYM SQLProcedures} function SQLProcedures( StatementHandle: SQLHSTMT; szCatalogName: SQLPCHAR; cbCatalogName: SQLSMALLINT; szSchemaName: SQLPCHAR; cbSchemaName: SQLSMALLINT; szProcName: SQLPCHAR; cbProcName: SQLSMALLINT): SQLRETURN; stdcall; {$EXTERNALSYM SQLSetPos} function SQLSetPos( StatementHandle: SQLHSTMT; RowNumber: SQLSETPOSIROW; Operation: SQLUSMALLINT; LockType: SQLUSMALLINT): SQLRETURN; stdcall; {$EXTERNALSYM SQLTablePrivileges} function SQLTablePrivileges( StatementHandle: SQLHSTMT; szCatalogName: SQLPCHAR; cbCatalogName: SQLSMALLINT; szSchemaName: SQLPCHAR; cbSchemaName: SQLSMALLINT; szTableName: SQLPCHAR; cbTableName: SQLSMALLINT): SQLRETURN; stdcall; {$EXTERNALSYM SQLDrivers} function SQLDrivers( henv: SQLHENV; fDirection: SQLUSMALLINT; szDriverDesc: SQLPCHAR; cbDriverDescMax: SQLSMALLINT; pcbDriverDesc: SQLPSMALLINT; szDriverAttributes: SQLPCHAR; cbDrvrAttrMax: SQLSMALLINT; pcbDrvrAttr: SQLPSMALLINT): SQLRETURN; stdcall; {$EXTERNALSYM SQLBindParameter} function SQLBindParameter( StatementHandle: SQLHSTMT; ParameterNumber: SQLUSMALLINT; InputOutputType: SQLSMALLINT; ValueType: SQLSMALLINT; ParameterType: SQLSMALLINT; ColumnSize: SQLULEN; DecimalDigits: SQLSMALLINT; ParameterValuePtr: SQLPOINTER; BufferLength: SQLLEN; StrLen_or_IndPtr: PSQLLEN): SQLRETURN; stdcall; {$EXTERNALSYM SQLAllocHandleStd} function SQLAllocHandleStd( fHandleType: SQLSMALLINT; hInput: SQLHANDLE; phOutput: SQLPHANDLE): SQLRETURN; stdcall; {$EXTERNALSYM SQLSetScrollOptions} function SQLSetScrollOptions( StatementHandle: SQLHSTMT; fConcurrency: SQLUSMALLINT; crowKeyset: SQLLEN; crowRowset: SQLUSMALLINT): SQLRETURN; stdcall; { ------------------------ } { ---- Trace Routines ---- } { ------------------------ } //{$EXTERNALSYM TraceOpenLogFile} //function TraceOpenLogFile(StrA: PWideChar; StrB: PWideChar; C: LongWord): RETCODE; stdcall; // //{$EXTERNALSYM TraceCloseLogFile} //function TraceCloseLogFile: RETCODE; stdcall; // //{$EXTERNALSYM TraceReturn} //procedure TraceReturn(A: RETCODE; B: RETCODE); stdcall; // //{$EXTERNALSYM TraceVersion} //function TraceVersion: Longword; stdcall; { ------------------------- } { ---- Global Routines ---- } { ------------------------- } function ODBCSucceeded(const ReturnCode: SQLRETURN): Boolean; inline; //function ODBCIsValidFetch(const ReturnCode: SQLRETURN): Boolean; function DateTimeFromODBCTimestamp(AODBCTimeStampStruct: PSQL_TIMESTAMP_STRUCT): TDateTime; function DateTimeFromODBCDate(AODBCDateStruct: PSQL_DATE_STRUCT): TDateTime; function DateTimeFromODBCTime(AODBCTimeStruct: PSQL_TIME_STRUCT; AHasFraction: Boolean = False): TDateTime; function CurrencyFromODBCNumeric(const AODBCNumericStruct: SQL_NUMERIC_STRUCT): Currency; procedure ODBCTimeStampFromDateTime(const ADateTime: TDateTime; AODBCTimeStampStruct: PSQL_TIMESTAMP_STRUCT); procedure ODBCDateFromDateTime(const ADate: TDateTime; AODBCDateStruct: PSQL_DATE_STRUCT); procedure ODBCTimeFromDateTime(const ATime: TDateTime; AODBCTimeStruct: PSQL_TIME_STRUCT; AHasFraction: Boolean = False); function ODBCFetchDSN(const EnvironmentHandle: SQLHENV; const FetchKind: SQLUSMALLINT; var DataSourceName, DataSourceDescription: TGMString): Boolean; function ODBCReturnCodeAsString(const ReturnCode: SQLRETURN): TGMString; function ODBCErrorCount(const HandleType: SQLSMALLINT; const Handle: SQLHANDLE): SQLINTEGER; function ODBCGetDiagString(const HandleType: SQLSMALLINT; const Handle: SQLHANDLE; const RecNumber: SQLSMALLINT; const DiagIdentifier: SQLSMALLINT; const AMaxLen: LongInt = 8192): TGMString; //function ODBCGetFixedLenDiagString(const HandleType: SQLSMALLINT; const Handle: SQLHANDLE; const RecNumber: SQLSMALLINT; const DiagIdentifier: SQLSMALLINT; const AFixedLen: LongInt): TGMString; function ODBCCharSize(DataType: SQLSMALLINT): LongInt; procedure ODBCCheck(const AReturnCode: SQLRETURN; const AObj: TObject = nil; const ARoutineName: TGMString = cDfltRoutineName; // const ASQLStmtText: TGMString = ''; const AHandleType: SQLSMALLINT = cInvalidHandleType; const AHandle: SQLHANDLE = cOdbcInvalidHandle); overload; function ODBCRowStatusAsText(const ARowStatus: LongInt): TGMString; function OdbcDataLenAtExec(const ADataLength: SQLLEN): SQLLEN; // <- C++ Macro SQL_LEN_DATA_AT_EXEC function OdbcErrorDescAsString(const AValue: RSQLErrorDesc): TGMString; function OdbcErrorDesc(const AHandleType: SQLSMALLINT; const AHandle: SQLHANDLE; const ADiagRecNo: LongInt; const ASQLCode: SQLRETURN): RSQLErrorDesc; { ---- Field Attributes ---- } function ODBCFieldName(const Handle: SQLHANDLE; const Position: SQLUSMALLINT; const Obj: TObject = nil; const ACallingName: TGMString = cDfltRoutineName): TGMString; function ODBCTypeName(const AHandle: SQLHANDLE; const APosition: SQLUSMALLINT; const AObj: TObject = nil; const ACallingName: TGMString = cDfltRoutineName): TGMString; function ODBCFieldOctetLength(const AHandle: SQLHANDLE; const APosition: SQLUSMALLINT; const AObj: TObject = nil; const ACallingName: TGMString = cDfltRoutineName): SQLLEN; function ODBCIsSignedField(const Handle: SQLHANDLE; const Position: SQLUSMALLINT; const Obj: TObject = nil; const ACallingName: TGMString = cDfltRoutineName): Boolean; function ODBCFieldDataType(const Handle: SQLHANDLE; const Position: SQLUSMALLINT; const Obj: TObject = nil; const ACallingName: TGMString = cDfltRoutineName): SQLLEN; function ODBCFieldNullValuesAllowed(const Handle: SQLHANDLE; const Position: SQLUSMALLINT; const Obj: TObject = nil; const ACallingName: TGMString = cDfltRoutineName): TGMAllowNullValues; function ODBCFieldUpdatable(const Handle: SQLHANDLE; const Position: SQLUSMALLINT; const Obj: TObject = nil; const ACallingName: TGMString = cDfltRoutineName): Boolean; function ODBCFieldIsAutoIncrementing(const Handle: SQLHANDLE; const Position: SQLUSMALLINT; const Obj: TObject = nil; const ACallingName: TGMString = cDfltRoutineName): Boolean; function C_DataTypeSymbolicName(C_DataType: SQLSMALLINT): TGMString; function FetchOrientationSymbolicName(AFetchOrientation: SQLSMALLINT): TGMString; type TOdbcErrorDescArray = array of RSQLErrorDesc; EGMOdbcError = class(EGMException, IGMGetHRCode) protected FHandleType: SQLSMALLINT; FHandle: SQLHANDLE; FReturnCode: SQLRETURN; FErrorDescs: TOdbcErrorDescArray; procedure ClearErrorList; procedure ReadODBCErrors; public constructor CreateODBCError(const AReturnCode: SQLRETURN; const AObj: TObject = nil; const ARoutineName: TGMString = cDfltRoutineName; // const ASQLStmtText: TGMString = ''; const AHandleType: SQLSMALLINT = cInvalidHandleType; const AHandle: SQLHANDLE = cOdbcInvalidHandle; const ASeverityLevel: TGMSeverityLevel = svError); virtual; constructor ObjError(const AMsg: TGMString = cDfltExceptionMsg; const AObj: TObject = nil; const ARoutineName: TGMString = cDfltRoutineName; const ASeverityLevel: TGMSeverityLevel = svError; const AHelpCtx: LongInt = cDfltHelpCtx); override; constructor IntfError(const AMsg: TGMString = cDfltExceptionMsg; const AIntf: IUnknown = nil; const ARoutineName: TGMString = cDfltRoutineName; const ASeverityLevel: TGMSeverityLevel = svError; const AHelpCtx: LongInt = cDfltHelpCtx); override; destructor Destroy; override; function ODBCErrMsgAsString: TGMString; function GetHRCode: HResult; stdcall; function HasErrorDesc(const AOdbcCode: TGMString): Boolean; property ErrorDescs: TOdbcErrorDescArray read FErrorDescs; end; const cODBCDateFormatStr: TGMString = '"{d ''"yyyy"-"mm"-"dd"''}"'; cODBCTimeFormatStr: TGMString = '"{t ''"hh":"nn":"ss"."zzz"''}"'; cODBCDateTimeFormatStr: TGMString = '"{ts ''"yyyy"-"mm"-"dd hh":"nn":"ss"''}"'; cODBCDateTimeFormatStrMS: TGMString = '"{ts ''"yyyy"-"mm"-"dd hh":"nn":"ss"."zzz"''}"'; implementation uses SysUtils; resourcestring RStrSuccess = 'Success'; RStrSuccessWithInfo = 'Success with info'; RStrUnknownSQLReturnCode = 'Unknown Return Code'; RStrNoData = 'No Data'; RStrInvalidHandle = 'Invalid handle'; RStrStillExecuting = 'Still executing'; RStrDataNeeded = 'Data Needed'; RStrReturnCode = 'ODBC Return Code'; RStrDeletedRow = 'Deleted row'; RStrUpdatedRow = 'Updated row'; RStrInvalidRow = 'Invalid row'; RStrNewRow = 'New row'; RStrUnknownRowStatus = 'Unknown row status'; const ODBC32_DLL = 'ODBC32.DLL'; { ------------------------------------------} { ---- External Routines in ODBC32.DLL ---- } { ------------------------------------------} function SQLAllocConnect; external ODBC32_DLL name cStrSQLAllocConnect; function SQLAllocEnv; external ODBC32_DLL name cStrSQLAllocEnv; function SQLAllocHandle; external ODBC32_DLL name cStrSQLAllocHandle; function SQLAllocStmt; external ODBC32_DLL name cStrSQLAllocStmt; function SQLBindCol; external ODBC32_DLL name cStrSQLBindCol; function SQLBindParam; external ODBC32_DLL name cStrSQLBindParam; function SQLCancel; external ODBC32_DLL name cStrSQLCancel; function SQLCloseCursor; external ODBC32_DLL name cStrSQLCloseCursor; function SQLColAttribute; external ODBC32_DLL name cStrSQLColAttribute; function SQLColumns; external ODBC32_DLL name cStrSQLColumns; function SQLConnect; external ODBC32_DLL name cStrSQLConnect; function SQLCopyDesc; external ODBC32_DLL name cStrSQLCopyDesc; function SQLDataSources; external ODBC32_DLL name cStrSQLDataSources; function SQLDescribeCol; external ODBC32_DLL name cStrSQLDescribeCol; function SQLDisconnect; external ODBC32_DLL name cStrSQLDisconnect; function SQLEndTran; external ODBC32_DLL name cStrSQLEndTran; function SQLError; external ODBC32_DLL name cStrSQLError; function SQLExecDirect; external ODBC32_DLL name cStrSQLExecDirect; function SQLExecute; external ODBC32_DLL name cStrSQLExecute; function SQLFetch; external ODBC32_DLL name cStrSQLFetch; function SQLFetchScroll; external ODBC32_DLL name cStrSQLFetchScroll; function SQLFreeConnect; external ODBC32_DLL name cStrSQLFreeConnect; function SQLFreeEnv; external ODBC32_DLL name cStrSQLFreeEnv; function SQLFreeHandle; external ODBC32_DLL name cStrSQLFreeHandle; function SQLFreeStmt; external ODBC32_DLL name cStrSQLFreeStmt; function SQLGetConnectAttr; external ODBC32_DLL name cStrSQLGetConnectAttr; function SQLGetConnectOption; external ODBC32_DLL name cStrSQLGetConnectOption; function SQLGetCursorName; external ODBC32_DLL name cStrSQLGetCursorName; function SQLGetData; external ODBC32_DLL name cStrSQLGetData; function SQLGetDescField; external ODBC32_DLL name cStrSQLGetDescField; function SQLGetDescRec; external ODBC32_DLL name cStrSQLGetDescRec; function SQLGetDiagField; external ODBC32_DLL name cStrSQLGetDiagField; function SQLGetDiagRec; external ODBC32_DLL name cStrSQLGetDiagRec; function SQLGetEnvAttr; external ODBC32_DLL name cStrSQLGetEnvAttr; function SQLGetFunctions; external ODBC32_DLL name cStrSQLGetFunctions; function SQLGetInfo; external ODBC32_DLL name cStrSQLGetInfo; function SQLGetStmtAttr; external ODBC32_DLL name cStrSQLGetStmtAttr; function SQLGetStmtOption; external ODBC32_DLL name cStrSQLGetStmtOption; function SQLGetTypeInfo; external ODBC32_DLL name cStrSQLGetTypeInfo; function SQLNumResultCols; external ODBC32_DLL name cStrSQLNumResultCols; function SQLParamData; external ODBC32_DLL name cStrSQLParamData; function SQLPrepare; external ODBC32_DLL name cStrSQLPrepare; function SQLPutData; external ODBC32_DLL name cStrSQLPutData; function SQLRowCount; external ODBC32_DLL name cStrSQLRowCount; function SQLSetConnectAttr; external ODBC32_DLL name cStrSQLSetConnectAttr; function SQLSetConnectOption; external ODBC32_DLL name cStrSQLSetConnectOption; function SQLSetCursorName; external ODBC32_DLL name cStrSQLSetCursorName; function SQLSetDescField; external ODBC32_DLL name cStrSQLSetDescField; function SQLSetDescRec; external ODBC32_DLL name cStrSQLSetDescRec; function SQLSetEnvAttr; external ODBC32_DLL name cStrSQLSetEnvAttr; function SQLSetParam; external ODBC32_DLL name cStrSQLSetParam; function SQLSetStmtAttr; external ODBC32_DLL name cStrSQLSetStmtAttr; function SQLSetStmtOption; external ODBC32_DLL name cStrSQLSetStmtOption; function SQLSpecialColumns; external ODBC32_DLL name cStrSQLSpecialColumns; function SQLStatistics; external ODBC32_DLL name cStrSQLStatistics; function SQLTables; external ODBC32_DLL name cStrSQLTables; function SQLTransact; external ODBC32_DLL name cStrSQLTransact; function SQLDriverConnect; external ODBC32_DLL name cStrSQLDriverConnect; function SQLBrowseConnect; external ODBC32_DLL name cStrSQLBrowseConnect; function SQLBulkOperations; external ODBC32_DLL name cStrSQLBulkOperations; function SQLColAttributes; external ODBC32_DLL name cStrSQLColAttributes; function SQLColumnPrivileges; external ODBC32_DLL name cStrSQLColumnPrivileges; function SQLDescribeParam; external ODBC32_DLL name cStrSQLDescribeParam; function SQLExtendedFetch; external ODBC32_DLL name cStrSQLExtendedFetch; function SQLForeignKeys; external ODBC32_DLL name cStrSQLForeignKeys; function SQLMoreResults; external ODBC32_DLL name cStrSQLMoreResults; function SQLNativeSql; external ODBC32_DLL name cStrSQLNativeSql; function SQLNumParams; external ODBC32_DLL name cStrSQLNumParams; function SQLParamOptions; external ODBC32_DLL name cStrSQLParamOptions; function SQLPrimaryKeys; external ODBC32_DLL name cStrSQLPrimaryKeys; function SQLProcedureColumns; external ODBC32_DLL name cStrSQLProcedureColumns; function SQLProcedures; external ODBC32_DLL name cStrSQLProcedures; function SQLSetPos; external ODBC32_DLL name cStrSQLSetPos; function SQLTablePrivileges; external ODBC32_DLL name cStrSQLTablePrivileges; function SQLDrivers; external ODBC32_DLL name cStrSQLDrivers; function SQLBindParameter; external ODBC32_DLL name cStrSQLBindParameter; function SQLAllocHandleStd; external ODBC32_DLL name cStrSQLAllocHandleStd; function SQLSetScrollOptions; external ODBC32_DLL name cStrSQLSetScrollOptions; //function TraceOpenLogFile; external ODBC32_DLL name cStrTraceOpenLogFile; //function TraceCloseLogFile; external ODBC32_DLL name cStrTraceCloseLogFile; //procedure TraceReturn; external ODBC32_DLL name cStrTraceReturn; //function TraceVersion; external ODBC32_DLL name cStrTraceVersion; { ------------------------- } { ---- Global Routines ---- } { ------------------------- } function ODBCSucceeded(const ReturnCode: SQLRETURN): Boolean; begin Result := (ReturnCode = SQL_SUCCESS) or (ReturnCode = SQL_SUCCESS_WITH_INFO); end; {function ODBCIsValidFetch(const ReturnCode: SQLRETURN): Boolean; begin Result := (ReturnCode <> SQL_NO_DATA) and (ReturnCode <> SQL_INVALID_HANDLE); end;} function ODBCReturnCodeAsString(const ReturnCode: SQLRETURN): TGMString; begin case ReturnCode of SQL_SUCCESS: Result := RStrSuccess; SQL_SUCCESS_WITH_INFO: Result := RStrSuccessWithInfo; SQL_NO_DATA: Result := RStrNoData; SQL_ERROR: Result := RStrError; SQL_INVALID_HANDLE: Result := RStrInvalidHandle; SQL_STILL_EXECUTING: Result := RStrStillExecuting; SQL_NEED_DATA: Result := RStrDataNeeded; else Result := RStrUnknownSQLReturnCode; end; //Result := RStrReturnCode + ': ' + Result; end; procedure ODBCCheck(const AReturnCode: SQLRETURN; const AObj: TObject; const ARoutineName: TGMString; // const ASQLStmtText: TGMString; const AHandleType: SQLSMALLINT; const AHandle: SQLHANDLE); begin if not ODBCSucceeded(AReturnCode) then // ASQLStmtText raise EGMOdbcError.CreateODBCError(AReturnCode, AObj, ARoutineName, AHandleType, AHandle, cOdbcSeverity[AReturnCode < 0]); end; function ODBCGetDiagInt(const HandleType: SQLSMALLINT; const Handle: SQLHANDLE; const RecNumber: SQLSMALLINT; const DiagIdentifier: SQLSMALLINT): SQLINTEGER; begin if not ODBCSucceeded(SQLGetDiagField(HandleType, Handle, RecNumber, DiagIdentifier, @Result, SQL_IS_INTEGER, nil)) then Result := 0; end; function ODBCErrorCount(const HandleType: SQLSMALLINT; const Handle: SQLHANDLE): SQLINTEGER; begin Result := ODBCGetDiagInt(HandleType, Handle, 0, SQL_DIAG_NUMBER); end; //function ODBCGetFixedLenDiagString(const HandleType: SQLSMALLINT; const Handle: SQLHANDLE; const RecNumber: SQLSMALLINT; const DiagIdentifier: SQLSMALLINT; const AFixedLen: LongInt): TGMString; //var len: SQLSMALLINT; //begin //SetLength(Result, AFixedLen); ////len := AMaxLen; //if ODBCSucceeded(SQLGetDiagField(HandleType, Handle, RecNumber, DiagIdentifier, PGMChar(Result), Length(Result) * SizeOf(TGMChar), @len)) then // SetLength(Result, len div SizeOf(TGMChar)) // else // Result := ''; //end; function ODBCGetDiagString(const HandleType: SQLSMALLINT; const Handle: SQLHANDLE; const RecNumber: SQLSMALLINT; const DiagIdentifier: SQLSMALLINT; const AMaxLen: LongInt): TGMString; var len: SQLSMALLINT; begin SetLength(Result, AMaxLen); len := AMaxLen; if ODBCSucceeded(SQLGetDiagField(HandleType, Handle, RecNumber, DiagIdentifier, PGMChar(Result), Length(Result) * SizeOf(TGMChar), @len)) then SetLength(Result, GMStrLen(PGMChar(Result), Min(Length(Result), len div SizeOf(TGMChar)))) else Result := ''; end; function ODBCISValidDiagRecNo(const HandleType: SQLSMALLINT; const Handle: SQLHANDLE; const RecNumber: SQLSMALLINT): Boolean; var bufStr: TGMString; len: SQLSMALLINT; begin SetLength(bufStr, 10); Result := ODBCSucceeded(SQLGetDiagField(HandleType, Handle, RecNumber, SQL_DIAG_SQLSTATE, SQLPOINTER(bufStr), Length(bufStr) * SizeOf(TGMChar), @len)); end; function ODBCFetchDSN(const EnvironmentHandle: SQLHENV; const FetchKind: SQLUSMALLINT; var DataSourceName, DataSourceDescription: TGMString): Boolean; var dsnNameLen, dsnDescLen: SQLSMALLINT; RetCode: SQLRETURN; const cStrLen = 512; begin SetLength(DataSourceName, cStrLen); SetLength(DataSourceDescription, cStrLen); RetCode := SQLDataSources(EnvironmentHandle, FetchKind, SQLPCHAR(DataSourceName), cStrLen, dsnNameLen, SQLPCHAR(DataSourceDescription), cStrLen, dsnDescLen); if ODBCSucceeded(RetCode) then begin SetLength(DataSourceName, dsnNameLen); SetLength(DataSourceDescription, dsnDescLen); Result := True; end else begin DataSourceName := ''; DataSourceDescription := ''; Result := False; end; end; function DateTimeFromODBCTimestamp(AODBCTimeStampStruct: PSQL_TIMESTAMP_STRUCT): TDateTime; begin Result := EncodeDate(AODBCTimeStampStruct.year, AODBCTimeStampStruct.month, AODBCTimeStampStruct.day) + EncodeTime(AODBCTimeStampStruct.hour, AODBCTimeStampStruct.minute, AODBCTimeStampStruct.second, AODBCTimeStampStruct.fraction div cODBCFractionFactor); end; function DateTimeFromODBCDate(AODBCDateStruct: PSQL_DATE_STRUCT): TDateTime; begin Result := EncodeDate(AODBCDateStruct.year, AODBCDateStruct.month, AODBCDateStruct.day); end; function DateTimeFromODBCTime(AODBCTimeStruct: PSQL_TIME_STRUCT; AHasFraction: Boolean): TDateTime; var milliSec: Integer; begin if AHasFraction then milliSec := PSQL_SS_TIME2_STRUCT(AODBCTimeStruct).fraction div cODBCFractionFactor else milliSec := 0; Result := EncodeTime(AODBCTimeStruct.hour, AODBCTimeStruct.minute, AODBCTimeStruct.second, milliSec); end; procedure ODBCTimeStampFromDateTime(const ADateTime: TDateTime; AODBCTimeStampStruct: PSQL_TIMESTAMP_STRUCT); var year, milliSec: Word; // , Month, Day, Hour, Minute, Second begin DecodeDate(ADateTime, year, AODBCTimeStampStruct.month, AODBCTimeStampStruct.day); DecodeTime(ADateTime, AODBCTimeStampStruct.hour, AODBCTimeStampStruct.minute, AODBCTimeStampStruct.second, milliSec); AODBCTimeStampStruct.year := year; AODBCTimeStampStruct.fraction := milliSec * cODBCFractionFactor; //DecodeDate(ADateTime, year, Month, Day); //DecodeTime(ADateTime, Hour, Minute, Second, milliSec); //AODBCTimeStampStruct.year := year; //AODBCTimeStampStruct.month := Month; //AODBCTimeStampStruct.day := Day; //AODBCTimeStampStruct.hour := Hour; //AODBCTimeStampStruct.minute := Minute; //AODBCTimeStampStruct.second := Second; //AODBCTimeStampStruct.fraction := milliSec * cODBCFractionFactor; end; procedure ODBCDateFromDateTime(const ADate: TDateTime; AODBCDateStruct: PSQL_DATE_STRUCT); var year: Word; // Month, Day begin DecodeDate(ADate, year, AODBCDateStruct.month, AODBCDateStruct.day); AODBCDateStruct.year := year; //AODBCDateStruct.month := Month; //AODBCDateStruct.day := Day; end; procedure ODBCTimeFromDateTime(const ATime: TDateTime; AODBCTimeStruct: PSQL_TIME_STRUCT; AHasFraction: Boolean); var milliSec: Word; // Hour, Minute, Second, begin DecodeTime(ATime, AODBCTimeStruct.hour, AODBCTimeStruct.minute, AODBCTimeStruct.second, milliSec); if AHasFraction then PSQL_SS_TIME2_STRUCT(AODBCTimeStruct).fraction := milliSec * cODBCFractionFactor; //AODBCTimeStruct.hour := Hour; //AODBCTimeStruct.minute := Minute; //AODBCTimeStruct.second := Second; end; function CurrencyFromODBCNumeric(const AODBCNumericStruct: SQL_NUMERIC_STRUCT): Currency; begin Assert(False, 'Not Implemented: CurrencyFromODBCNumeric'); Result := 0; end; function ODBCCharSize(DataType: SQLSMALLINT): LongInt; begin case DataType of SQL_C_CHAR: Result := SizeOf(TGMChar); SQL_C_WCHAR: Result := SizeOf(WideChar); else Result := 0; end; end; function ODBCRowStatusAsText(const ARowStatus: LongInt): TGMString; begin case ARowStatus of SQL_ROW_SUCCESS: Result := RStrSuccess; SQL_ROW_DELETED: Result := RStrDeletedRow; SQL_ROW_UPDATED: Result := RStrUpdatedRow; SQL_ROW_NOROW: Result := RStrInvalidRow; SQL_ROW_ADDED: Result := RStrNewRow; SQL_ROW_ERROR: Result := RStrError; SQL_ROW_SUCCESS_WITH_INFO: Result := RStrSuccessWithInfo; else Result := RStrUnknownRowStatus; end; end; function OdbcErrorDesc(const AHandleType: SQLSMALLINT; const AHandle: SQLHANDLE; const ADiagRecNo: LongInt; const ASQLCode: SQLRETURN): RSQLErrorDesc; begin //FillByte(Result, SizeOf(Result), 0); with Result do begin ReturnCode := ASQLCode; Code := OdbcGetDiagString(AHandleType, AHandle, ADiagRecNo, SQL_DIAG_SQLSTATE); Origin := OdbcGetDiagString(AHandleType, AHandle, ADiagRecNo, SQL_DIAG_CLASS_ORIGIN); SubClassOrigin := OdbcGetDiagString(AHandleType, AHandle, ADiagRecNo, SQL_DIAG_SUBCLASS_ORIGIN); Msg := OdbcGetDiagString(AHandleType, AHandle, ADiagRecNo, SQL_DIAG_MESSAGE_TEXT); Connection := OdbcGetDiagString(AHandleType, AHandle, ADiagRecNo, SQL_DIAG_CONNECTION_NAME); Server := OdbcGetDiagString(AHandleType, AHandle, ADiagRecNo, SQL_DIAG_SERVER_NAME); NativeCode := OdbcGetDiagInt(AHandleType, AHandle, ADiagRecNo, SQL_DIAG_NATIVE); end; end; function OdbcErrorDescAsString(const AValue: RSQLErrorDesc): TGMString; const cSep = ', '; begin Result := AValue.Code; Result := GMStringJoin(Result, cSep, AValue.Origin); Result := GMStringJoin(Result, cSep, GMIntToStr(AValue.NativeCode)); Result := GMStringJoin(Result, cSep, AValue.Msg); Result := GMStringJoin(Result, cSep, AValue.Connection); Result := GMStringJoin(Result, cSep, AValue.Server); //Result := GMStrip(Result, cSep); end; function OdbcDataLenAtExec(const ADataLength: SQLLEN): SQLLEN; // <- C++ Macro SQL_LEN_DATA_AT_EXEC begin if ADataLength <= 0 then Result := SQL_NULL_DATA else Result := SQL_DATA_LEN_AT_EXEC_OFFSET - ADataLength; end; { ---- Field Attributes ---- } function ODBCFieldName(const Handle: SQLHANDLE; const Position: SQLUSMALLINT; const Obj: TObject = nil; const ACallingName: TGMString = cDfltRoutineName): TGMString; const cBufSize = 255; var resultLen: SQLSMALLINT; begin Setlength(Result, cBufSize); ODBCCheck(SQLColAttribute(Handle, Position, SQL_DESC_NAME, PGMChar(Result), cBufSize * SizeOf(TGMChar), @resultLen, nil), Obj, ACallingName); Setlength(Result, resultLen div SizeOf(TGMChar)); end; function ODBCTypeName(const AHandle: SQLHANDLE; const APosition: SQLUSMALLINT; const AObj: TObject = nil; const ACallingName: TGMString = cDfltRoutineName): TGMString; const cBufSize = 255; var resultLen: SQLSMALLINT; begin // SQL_DESC_LOCAL_TYPE_NAME Setlength(Result, cBufSize); ODBCCheck(SQLColAttribute(AHandle, APosition, SQL_DESC_TYPE_NAME, PGMChar(Result), cBufSize * SizeOf(TGMChar), @resultLen, nil), AObj, ACallingName); Setlength(Result, resultLen div SizeOf(TGMChar)); end; function ODBCFieldOctetLength(const AHandle: SQLHANDLE; const APosition: SQLUSMALLINT; const AObj: TObject = nil; const ACallingName: TGMString = cDfltRoutineName): SQLLEN; //var SQLSigned: SQLUINTEGER; begin // SQL_DESC_LENGTH SQL_DESC_OCTET_LENGTH ODBCCheck(SQLColAttribute(AHandle, APosition, SQL_DESC_LENGTH, nil, 0, nil, @Result), AObj, ACallingName, SQL_HANDLE_STMT, AHandle); end; function ODBCIsSignedField(const Handle: SQLHANDLE; const Position: SQLUSMALLINT; const Obj: TObject = nil; const ACallingName: TGMString = cDfltRoutineName): Boolean; var sqlSigned: SQLLEN; begin ODBCCheck(SQLColAttribute(Handle, Position, SQL_COLUMN_UNSIGNED, nil, 0, nil, @sqlSigned), Obj, ACallingName, SQL_HANDLE_STMT, Handle); case sqlSigned of SQL_TRUE: Result := False; SQL_FALSE: Result := True; else raise EGMException.ObjError(MsgUnknownPropVal('Signed', sqlSigned), Obj, ACallingName); end; end; function ODBCFieldDataType(const Handle: SQLHANDLE; const Position: SQLUSMALLINT; const Obj: TObject = nil; const ACallingName: TGMString = cDfltRoutineName): SQLLEN; begin // Some drivers report wrong Bookmark data type. // We conform to ODBC 3.0 that bokmarks are always variable length binary data. if Position = cOdbcBookmarkColPos then Result := SQL_C_VARBOOKMARK else // SQL_DESC_CONCISE_TYPE works against 2.x Drivers too - SQL_DESC_TYPE only with 3.x ODBCCheck(SQLColAttribute(Handle, Position, SQL_DESC_CONCISE_TYPE, nil, 0, nil, @Result), Obj, ACallingName, SQL_HANDLE_STMT, Handle); end; function ODBCFieldNullValuesAllowed(const Handle: SQLHANDLE; const Position: SQLUSMALLINT; const Obj: TObject = nil; const ACallingName: TGMString = cDfltRoutineName): TGMAllowNullValues; var nullsAllowed: SQLLEN; begin ODBCCheck(SQLColAttribute(Handle, Position, SQL_DESC_NULLABLE, nil, 0, nil, @nullsAllowed), Obj, ACallingName); case nullsAllowed of SQL_NO_NULLS: Result := nvNullValuesNotAllowed; SQL_NULLABLE: Result := nvNullValuesAllowed; SQL_NULLABLE_UNKNOWN: Result := nvNullableUnknown; else raise EGMException.ObjError(MsgUnknownPropVal('NullValuesAllowed', nullsAllowed), Obj, ACallingName); end; end; function ODBCFieldUpdatable(const Handle: SQLHANDLE; const Position: SQLUSMALLINT; const Obj: TObject = nil; const ACallingName: TGMString = cDfltRoutineName): Boolean; var updt: SQLLEN; begin ODBCCheck(SQLColAttribute(Handle, Position, SQL_COLUMN_UPDATABLE, nil, 0, nil, @updt), Obj, ACallingName); case updt of SQL_ATTR_READONLY: Result := False; SQL_ATTR_WRITE, SQL_ATTR_READWRITE_UNKNOWN: Result := True; else raise EGMException.ObjError(MsgUnknownPropVal('Updatable', updt), Obj, ACallingName); end; end; function ODBCFieldIsAutoIncrementing(const Handle: SQLHANDLE; const Position: SQLUSMALLINT; const Obj: TObject = nil; const ACallingName: TGMString = cDfltRoutineName): Boolean; var autoInc: SQLLEN; begin ODBCCheck(SQLColAttribute(Handle, Position, SQL_COLUMN_AUTO_INCREMENT, nil, 0, nil, @autoInc), Obj, ACallingName); case autoInc of SQL_TRUE: Result := True; SQL_FALSE: Result := False; else raise EGMException.ObjError(MsgUnknownPropVal('AutoIncrementing', autoInc), Obj, ACallingName); end; end; function C_DataTypeSymbolicName(C_DataType: SQLSMALLINT): TGMString; begin case C_DataType of SQL_UNKNOWN_TYPE: Result := 'SQL_C_UNKNOWN_TYPE'; SQL_C_DEFAULT: Result := 'SQL_C_DEFAULT'; SQL_C_CHAR : Result := 'SQL_C_CHAR'; SQL_C_WCHAR : Result := 'SQL_C_WCHAR'; SQL_C_LONG : Result := 'SQL_C_LONG'; SQL_C_SHORT : Result := 'SQL_C_SHORT'; SQL_C_FLOAT : Result := 'SQL_C_FLOAT'; SQL_C_DOUBLE : Result := 'SQL_C_DOUBLE'; SQL_C_NUMERIC: Result := 'SQL_C_NUMERIC'; SQL_C_DATE: Result := 'SQL_C_DATE'; SQL_C_TIME: Result := 'SQL_C_TIME'; SQL_C_TIMESTAMP: Result := 'SQL_C_TIMESTAMP'; SQL_C_TYPE_DATE: Result := 'SQL_C_TYPE_DATE'; SQL_C_TYPE_TIME: Result := 'SQL_C_TYPE_TIME'; SQL_C_TYPE_TIMESTAMP: Result := 'SQL_C_TYPE_TIMESTAMP'; SQL_C_INTERVAL_YEAR: Result := 'SQL_C_INTERVAL_YEAR'; SQL_C_INTERVAL_MONTH: Result := 'SQL_C_INTERVAL_MONTH'; SQL_C_INTERVAL_DAY: Result := 'SQL_C_INTERVAL_DAY'; SQL_C_INTERVAL_HOUR: Result := 'SQL_C_INTERVAL_HOUR'; SQL_C_INTERVAL_MINUTE: Result := 'SQL_C_INTERVAL_MINUTE'; SQL_C_INTERVAL_SECOND: Result := 'SQL_C_INTERVAL_SECOND'; SQL_C_INTERVAL_YEAR_TO_MONTH: Result := 'SQL_C_INTERVAL_YEAR_TO_MONTH'; SQL_C_INTERVAL_DAY_TO_HOUR: Result := 'SQL_C_INTERVAL_DAY_TO_HOUR'; SQL_C_INTERVAL_DAY_TO_MINUTE: Result := 'SQL_C_INTERVAL_DAY_TO_MINUTE'; SQL_C_INTERVAL_DAY_TO_SECOND: Result := 'SQL_C_INTERVAL_DAY_TO_SECOND'; SQL_C_INTERVAL_HOUR_TO_MINUTE: Result := 'SQL_C_INTERVAL_HOUR_TO_MINUTE'; SQL_C_INTERVAL_HOUR_TO_SECOND: Result := 'SQL_C_INTERVAL_HOUR_TO_SECOND'; SQL_C_INTERVAL_MINUTE_TO_SECOND: Result := 'SQL_C_INTERVAL_MINUTE_TO_SECOND'; SQL_C_BINARY: Result := 'SQL_C_BINARY'; SQL_C_BIT: Result := 'SQL_C_BIT'; SQL_C_BIGINT: Result := 'SQL_C_BIGINT'; SQL_C_SBIGINT: Result := 'SQL_C_SBIGINT'; SQL_C_UBIGINT: Result := 'SQL_C_UBIGINT'; SQL_C_TINYINT: Result := 'SQL_C_TINYINT'; SQL_C_SLONG: Result := 'SQL_C_SLONG'; SQL_C_SSHORT: Result := 'SQL_C_SSHORT'; SQL_C_STINYINT: Result := 'SQL_C_STINYINT'; SQL_C_ULONG: Result := 'SQL_C_ULONG'; SQL_C_USHORT: Result := 'SQL_C_USHORT'; SQL_C_UTINYINT: Result := 'SQL_C_UTINYINT'; SQL_C_GUID: Result := 'SQL_C_GUID'; //SQL_C_VARBOOKMARK: Result := 'SQL_C_VARBOOKMARK'; else Result := 'UNKNOWN('+GMIntToStr(C_DataType)+')'; end; end; function FetchOrientationSymbolicName(AFetchOrientation: SQLSMALLINT): TGMString; begin case AFetchOrientation of SQL_FETCH_NEXT: Result := 'SQL_FETCH_NEXT'; SQL_FETCH_FIRST: Result := 'SQL_FETCH_FIRST'; //SQL_FETCH_FIRST_USER: Result := 'SQL_FETCH_FIRST_USER'; //SQL_FETCH_FIRST_SYSTEM: Result := 'SQL_FETCH_FIRST_SYSTEM'; SQL_FETCH_LAST: Result := 'SQL_FETCH_LAST'; SQL_FETCH_PRIOR: Result := 'SQL_FETCH_PRIOR'; SQL_FETCH_ABSOLUTE: Result := 'SQL_FETCH_ABSOLUTE'; SQL_FETCH_RELATIVE: Result := 'SQL_FETCH_RELATIVE'; SQL_FETCH_BOOKMARK: Result := 'SQL_FETCH_BOOKMARK'; else Result := GMIntToStr(AFetchOrientation); end; end; { ---------------------- } { ---- EGMOdbcError ---- } { ---------------------- } constructor EGMOdbcError.CreateODBCError(const AReturnCode: SQLRETURN; const AObj: TObject; const ARoutineName: TGMString; // const ASQLStmtText: TGMString; const AHandleType: SQLSMALLINT; const AHandle: SQLHANDLE; const ASeverityLevel: TGMSeverityLevel); const CHelpCtx = 0; // cSqlTxtMaxLen = 100000; var getHandleType: IGMGetHandleType; getHandle: IGMGetHandle; // sqlTxt: TGMString; begin FReturnCode := AReturnCode; if AHandleType <> cInvalidHandleType then FHandleType := AHandleType else //if AObj is TGMOdbcComponent then FHandleType := TGMOdbcComponent(AObj).AHandleType if (AObj <> nil) and AObj.GetInterface(IGMGetHandleType, getHandleType) then FHandleType := getHandleType.getHandleType else FHandleType := SQL_HANDLE_ENV; if AHandle <> cOdbcInvalidHandle then FHandle := AHandle else //if AObj is TGMOdbcComponent then FHandle := TGMOdbcComponent(AObj).AHandle if (AObj <> nil) and AObj.GetInterface(IGMGetHandle, getHandle) then FHandle := getHandle.Handle else FHandle := SQL_NULL_HANDLE; //if Length(ASQLStmtText) <= cSqlTxtMaxLen then sqlTxt := ASQLStmtText else sqlTxt := Copy(ASQLStmtText, 1, cSqlTxtMaxLen) + cStr_More; ReadODBCErrors; SetupInformation(ODBCErrMsgAsString, GMGetObjName(AObj), GMObjClassName(AObj), ARoutineName, ASeverityLevel, CHelpCtx); //SetupInformation(GMStringJoin(ODBCErrMsgAsString, c2NewLine, sqlTxt), GMGetObjName(AObj), GMObjClassName(AObj), ARoutineName, ASeverityLevel, CHelpCtx); inherited CreateHelp(GMBuildExceptionMsg(Self), CHelpCtx); end; constructor EGMOdbcError.ObjError(const AMsg: TGMString; const AObj: TObject; const ARoutineName: TGMString; const ASeverityLevel: TGMSeverityLevel; const AHelpCtx: LongInt); begin FReturnCode := SQL_ERROR; SetLength(FErrorDescs, 1); with FErrorDescs[High(FErrorDescs)] do begin ReturnCode := FReturnCode; Code := cOdbcErrGeneral; Msg := AMsg; Origin := GMStrip(GMFormat('%s.%s', [GMObjClassName(AObj), ARoutineName]), cWhiteSpace + '.'); end; inherited ObjError(ODBCErrMsgAsString, AObj, ARoutineName, ASeverityLevel, AHelpCtx); end; constructor EGMOdbcError.IntfError(const AMsg: TGMString = cDfltExceptionMsg; const AIntf: IUnknown = nil; const ARoutineName: TGMString = cDfltRoutineName; const ASeverityLevel: TGMSeverityLevel = svError; const AHelpCtx: LongInt= cDfltHelpCtx); begin FReturnCode := SQL_ERROR; SetLength(FErrorDescs, 1); with FErrorDescs[High(FErrorDescs)] do begin ReturnCode := FReturnCode; Code := cOdbcErrGeneral; Msg := AMsg; Origin := GMStrip(GMFormat('%s.%s', [RStrInterface, ARoutineName]), cWhiteSpace + '.'); end; inherited IntfError(ODBCErrMsgAsString, AIntf, ARoutineName, ASeverityLevel, AHelpCtx); end; destructor EGMOdbcError.Destroy; begin ClearErrorList; inherited Destroy; end; function EGMOdbcError.GetHRCode: HResult; stdcall; begin Result := HRESULT($80004005); // E_FAIL; end; function EGMOdbcError.HasErrorDesc(const AOdbcCode: TGMString): Boolean; var i: Integer; begin for i:=Low(FErrorDescs) to High(FErrorDescs) do if GMSameText(FErrorDescs[i].Code, AOdbcCode) then Exit(True); Result := False; end; procedure EGMOdbcError.ClearErrorList; begin SetLength(FErrorDescs, 0); end; procedure EGMOdbcError.ReadODBCErrors; var i: LongInt; begin ClearErrorList; i:=1; while ODBCISValidDiagRecNo(FHandleType, FHandle, i) do begin SetLength(FErrorDescs, Length(FErrorDescs) + 1); FErrorDescs[High(FErrorDescs)] := OdbcErrorDesc(FHandleType, FHandle, i, FReturnCode); Inc(i); end; end; function EGMOdbcError.ODBCErrMsgAsString: TGMString; var i: LongInt; errRecStr: TGMString; begin Result := RStrReturnCode + ': ' + ODBCReturnCodeAsString(FReturnCode) + ' (' + GMIntToStr(FReturnCode) + ')'; for i:=Low(FErrorDescs) to High(FErrorDescs) do errRecStr := GMStringJoin(errRecStr, cNewLine, OdbcErrorDescAsString(FErrorDescs[i])); Result := GMStringJoin(Result, c2NewLine, errRecStr); end; end.