2
0
Эх сурвалжийг харах

* Windows 64-bit patches from Laco

git-svn-id: trunk@23702 -
michael 12 жил өмнө
parent
commit
94e021157b
1 өөрчлөгдсөн 103 нэмэгдсэн , 91 устгасан
  1. 103 91
      packages/odbc/src/odbcsql.inc

+ 103 - 91
packages/odbc/src/odbcsql.inc

@@ -1,30 +1,36 @@
 {$ifdef fpc}
-{$mode objfpc}
-{$macro on}
+ {$mode objfpc}
+ {$macro on}
 {$endif}
 
 {$h+}
 
 {$ifdef fpc}
- // define ODBC version 3.51 by default
-{$define ODBCVER:=$0351}
+ // define ODBC version 3.52 by default for Windows and MAC and 3.51 for Linux/Unix
+ {$if defined(WINDOWS) or defined(DARWIN)}
+  {$define ODBCVER:=$0352}
+ {$else}
+  {$define ODBCVER:=$0351}
+ {$endif}
+{$else fpc}
+ {$define ODBCVER:=$0352}
+{$endif fpc}
 {$if ODBCVER >= $0300}
   {$define ODBCVER3}
 {$endif}
 {$if ODBCVER >= $0350}
   {$define ODBCVER35}
 {$endif}
-{$else fpc}
-  {$define ODBCVER3}
-  {$define ODBCVER35}
-{$endif fpc}
+{$if ODBCVER >= $0352}
+  {$define ODBCVER352}
+{$endif}
 
 {$ifndef DYNLOADINGODBC}
-{$IFDEF WINDOWS}
+ {$IFDEF WINDOWS}
   { $linklib odbc32}
-{$ELSE}
+ {$ELSE}
   {$linklib odbc}
-{$endif}
+ {$ENDIF}
 {$endif}
 
 interface
@@ -65,24 +71,29 @@ type
   SQLSCHAR     = cschar;
   SQLSMALLINT  = csshort;
   SQLUSMALLINT = cushort;
+  SQLINTEGER   = clong;
+  SQLUINTEGER  = culong;
+  SQLLEN       = {$IFDEF ODBCVER352}PtrInt{$ELSE}SQLINTEGER{$ENDIF};
+  SQLULEN      = {$IFDEF ODBCVER352}PtrUInt{$ELSE}SQLUINTEGER{$ENDIF};
+  SQLREAL      = cfloat;
+  SQLDOUBLE    = cdouble;
+  SQLFLOAT     = cdouble;
   SQLRETURN    = SQLSMALLINT;
+  SQLPOINTER   = pointer;
   SQLHANDLE    = pointer;
   SQLHENV      = SQLHANDLE;
   SQLHDBC      = SQLHANDLE;
   SQLHSTMT     = SQLHANDLE;
   SQLHDESC     = SQLHANDLE;
-  SQLINTEGER   = clong;
-  SQLUINTEGER  = culong;
-  SQLPOINTER   = pointer;
-  SQLREAL      = cfloat;
-  SQLDOUBLE    = cdouble;
-  SQLFLOAT     = cdouble;
   SQLHWND      = pointer;
+  SQLSETPOSIROW= {$IF DEFINED(CPU64) AND DEFINED(ODBCVER352)}cuint64{$ELSE}SQLUSMALLINT{$ENDIF};
   PSQLCHAR      = PChar;
-  PSQLINTEGER   = ^SQLINTEGER;
-  PSQLUINTEGER  = ^SQLUINTEGER;
   PSQLSMALLINT  = ^SQLSMALLINT;
   PSQLUSMALLINT = ^SQLUSMALLINT;
+  PSQLINTEGER   = ^SQLINTEGER;
+  PSQLUINTEGER  = ^SQLUINTEGER;
+  PSQLLEN       = ^SQLLEN;
+  PSQLULEN      = ^SQLULEN;
   PSQLREAL      = ^SQLREAL;
   PSQLDOUBLE    = ^SQLDOUBLE;
   PSQLFLOAT     = ^SQLFLOAT;
@@ -240,7 +251,7 @@ const
   SQL_C_ULONG    =  SQL_C_LONG +SQL_UNSIGNED_OFFSET; // UNSIGNED INTEGER
   SQL_C_USHORT   =  SQL_C_SHORT+SQL_UNSIGNED_OFFSET; // UNSIGNED SMALLINT
   SQL_C_UTINYINT =  SQL_TINYINT+SQL_UNSIGNED_OFFSET; // UNSIGNED TINYINT
-  SQL_C_BOOKMARK = SQL_C_ULONG; // BOOKMARK
+  SQL_C_BOOKMARK = {$if defined(CPU64) and defined(ODBCVER352)}SQL_C_UBIGINT{$else}SQL_C_ULONG{$endif}; // BOOKMARK
 
 {$ifdef ODBCVER35}
   SQL_C_GUID    = SQL_GUID;
@@ -445,8 +456,6 @@ const
 
   SQL_MAX_OPTION_STRING_LENGTH = 256;
 
-  SQL_ODBC_CURSORS      = 110;
-  SQL_ATTR_ODBC_CURSORS = SQL_ODBC_CURSORS;
   { SQL_ODBC_CURSORS options }
   SQL_CUR_USE_IF_NEEDED = 0;
   SQL_CUR_USE_ODBC      = 1;
@@ -521,55 +530,51 @@ const
   SQL_RETRIEVE_DATA           =11;
   SQL_USE_BOOKMARKS           =12;
   SQL_GET_BOOKMARK            =13;      //      GetStmtOption Only */
-  SQL_ROW_NUMBER              = 14;     //      GetStmtOption Only */
+  SQL_ROW_NUMBER              =14 ;     //      GetStmtOption Only */
 
   SQL_ATTR_CURSOR_TYPE        = SQL_CURSOR_TYPE;
   SQL_ATTR_CONCURRENCY        = SQL_CONCURRENCY;
   SQL_ATTR_FETCH_BOOKMARK_PTR = 16;
   SQL_ATTR_ROW_STATUS_PTR     = 25;
   SQL_ATTR_ROWS_FETCHED_PTR   = 26;
-  SQL_AUTOCOMMIT              = 102;
-  SQL_ATTR_AUTOCOMMIT         = SQL_AUTOCOMMIT;
 
   SQL_ATTR_ROW_NUMBER         = SQL_ROW_NUMBER;
-  SQL_TXN_ISOLATION           = 108;
-  SQL_ATTR_TXN_ISOLATION      = SQL_TXN_ISOLATION;
   SQL_ATTR_MAX_ROWS           = SQL_MAX_ROWS;
   SQL_ATTR_USE_BOOKMARKS      = SQL_USE_BOOKMARKS;
 
 //* connection attributes */
   SQL_ACCESS_MODE             =101;
-//  SQL_AUTOCOMMIT              =102;
+  SQL_AUTOCOMMIT              =102;
   SQL_LOGIN_TIMEOUT           =103;
   SQL_OPT_TRACE               =104;
   SQL_OPT_TRACEFILE           =105;
   SQL_TRANSLATE_DLL           =106;
   SQL_TRANSLATE_OPTION        =107;
-//  SQL_TXN_ISOLATION           =108;
+  SQL_TXN_ISOLATION           =108;
   SQL_CURRENT_QUALIFIER       =109;
-//  SQL_ODBC_CURSORS            =110;
+  SQL_ODBC_CURSORS            =110;
   SQL_QUIET_MODE              =111;
   SQL_PACKET_SIZE             =112;
 
 
 //* connection attributes with new names */
-  SQL_ATTR_ACCESS_MODE              =SQL_ACCESS_MODE;
-//  SQL_ATTR_AUTOCOMMIT                       =SQL_AUTOCOMMIT;
-  SQL_ATTR_CONNECTION_DEAD        =1209;        //* GetConnectAttr only */
-  SQL_ATTR_CONNECTION_TIMEOUT   =113;
-  SQL_ATTR_CURRENT_CATALOG        =SQL_CURRENT_QUALIFIER;
+  SQL_ATTR_ACCESS_MODE        =SQL_ACCESS_MODE;
+  SQL_ATTR_AUTOCOMMIT         =SQL_AUTOCOMMIT;
+  SQL_ATTR_CONNECTION_DEAD    =1209;        //* GetConnectAttr only */
+  SQL_ATTR_CONNECTION_TIMEOUT =113;
+  SQL_ATTR_CURRENT_CATALOG    =SQL_CURRENT_QUALIFIER;
   SQL_ATTR_DISCONNECT_BEHAVIOR=114;
-  SQL_ATTR_ENLIST_IN_DTC                  =1207;
-  SQL_ATTR_ENLIST_IN_XA             =1208;
-  SQL_ATTR_LOGIN_TIMEOUT                  =SQL_LOGIN_TIMEOUT;
-//  SQL_ATTR_ODBC_CURSORS             =SQL_ODBC_CURSORS;
-  SQL_ATTR_PACKET_SIZE              =SQL_PACKET_SIZE;
-  SQL_ATTR_QUIET_MODE                       =SQL_QUIET_MODE;
-  SQL_ATTR_TRACE                                      =SQL_OPT_TRACE;
-  SQL_ATTR_TRACEFILE                        =SQL_OPT_TRACEFILE;
-  SQL_ATTR_TRANSLATE_LIB                  =SQL_TRANSLATE_DLL;
-  SQL_ATTR_TRANSLATE_OPTION       =SQL_TRANSLATE_OPTION;
-//  SQL_ATTR_TXN_ISOLATION                  =SQL_TXN_ISOLATION;
+  SQL_ATTR_ENLIST_IN_DTC      =1207;
+  SQL_ATTR_ENLIST_IN_XA       =1208;
+  SQL_ATTR_LOGIN_TIMEOUT      =SQL_LOGIN_TIMEOUT;
+  SQL_ATTR_ODBC_CURSORS       =SQL_ODBC_CURSORS;
+  SQL_ATTR_PACKET_SIZE        =SQL_PACKET_SIZE;
+  SQL_ATTR_QUIET_MODE         =SQL_QUIET_MODE;
+  SQL_ATTR_TRACE              =SQL_OPT_TRACE;
+  SQL_ATTR_TRACEFILE          =SQL_OPT_TRACEFILE;
+  SQL_ATTR_TRANSLATE_LIB      =SQL_TRANSLATE_DLL;
+  SQL_ATTR_TRANSLATE_OPTION   =SQL_TRANSLATE_OPTION;
+  SQL_ATTR_TXN_ISOLATION      =SQL_TXN_ISOLATION;
 
 //* SQL_ACCESS_MODE options */
   SQL_MODE_READ_WRITE         =0;
@@ -797,19 +802,14 @@ const
 #define SQL_MAX_CONCURRENT_ACTIVITIES        1
 #define SQL_MAXIMUM_CONCURRENT_ACTIVITIES       SQL_MAX_CONCURRENT_ACTIVITIES
 #endif
-#define SQL_DATA_SOURCE_NAME                 2
 #define SQL_FETCH_DIRECTION                  8
-#define SQL_SERVER_NAME                     13
 #define SQL_SEARCH_PATTERN_ESCAPE           14
-#define SQL_DBMS_NAME                       17
-#define SQL_DBMS_VER                        18
 #define SQL_ACCESSIBLE_TABLES               19
-#define SQL_ACCESSIBLE_PROCEDURES               20
+#define SQL_ACCESSIBLE_PROCEDURES           20
 #define SQL_CURSOR_COMMIT_BEHAVIOR          23
 #define SQL_DATA_SOURCE_READ_ONLY           25
 #define SQL_DEFAULT_TXN_ISOLATION           26
 #define SQL_IDENTIFIER_CASE                 28
-#define SQL_IDENTIFIER_QUOTE_CHAR           29
 #define SQL_MAX_COLUMN_NAME_LEN             30
 #define SQL_MAXIMUM_COLUMN_NAME_LENGTH          SQL_MAX_COLUMN_NAME_LEN
 #define SQL_MAX_CURSOR_NAME_LEN             31
@@ -820,9 +820,16 @@ const
 #define SQL_MAXIMUM_CATALOG_NAME_LENGTH         SQL_MAX_CATALOG_NAME_LEN
 #define SQL_MAX_TABLE_NAME_LEN              35
 }
+  SQL_DATA_SOURCE_NAME                = 2;
+  SQL_DRIVER_NAME                     = 6;
+  SQL_DRIVER_VER                      = 7;
+  SQL_SERVER_NAME                     = 13;
+  SQL_DBMS_NAME                       = 17;
+  SQL_DBMS_VER                        = 18;
+  SQL_IDENTIFIER_QUOTE_CHAR           = 29;
   SQL_SCROLL_CONCURRENCY              = 43;
   SQL_TXN_CAPABLE                     = 46;
-  SQL_TRANSACTION_CAPABLE              = SQL_TXN_CAPABLE;
+  SQL_TRANSACTION_CAPABLE             = SQL_TXN_CAPABLE;
   SQL_USER_NAME                       = 47;
   SQL_TXN_ISOLATION_OPTION            = 72;
   SQL_TRANSACTION_ISOLATION_OPTION    = SQL_TXN_ISOLATION_OPTION;
@@ -1000,7 +1007,7 @@ const
   SQL_COLUMN_DRIVER_START        = 1000;
 {$endif} { ODBCVER >= 0x0300 }
 
- { SQLColAttribute defines }
+{ SQLColAttribute defines }
 {$ifdef ODBCVER3}
   SQL_DESC_ARRAY_SIZE	     = 20;
   SQL_DESC_ARRAY_STATUS_PTR  = 21;
@@ -1032,6 +1039,11 @@ const
   SQL_DESC_UPDATABLE         = SQL_COLUMN_UPDATABLE;
 {$endif}
 
+{ SQLColAttributes subdefines for SQL_COLUMN_UPDATABLE }
+  SQL_ATTR_READONLY          = 0;
+  SQL_ATTR_WRITE             = 1;
+  SQL_ATTR_READWRITE_UNKNOWN = 2;
+
 //* SQLEndTran() options */
   SQL_COMMIT    = 0;
   SQL_ROLLBACK  = 1;
@@ -1100,20 +1112,20 @@ type   TSQLNumResultCols=function (StatementHandle:SQLHSTMT;
 type   TSQLDescribeCol=function (StatementHandle:SQLHSTMT;
            ColumnNumber:SQLUSMALLINT;ColumnName:PSQLCHAR;
            BufferLength:SQLSMALLINT;var NameLength:SQLSMALLINT;
-           var DataType:SQLSMALLINT;var ColumnSize:SQLUINTEGER;
+           var DataType:SQLSMALLINT;var ColumnSize:SQLULEN;
            var DecimalDigits:SQLSMALLINT;var Nullable:SQLSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
 
 type   TSQLFetchScroll=function (StatementHandle:SQLHSTMT;
-           FetchOrientation:SQLSMALLINT;FetchOffset:SQLINTEGER):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
+           FetchOrientation:SQLSMALLINT;FetchOffset:SQLLEN):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
 
 type   TSQLExtendedFetch=function (hstmt:SQLHSTMT;
-           fFetchType:SQLUSMALLINT;irow:SQLINTEGER;
-           pcrow:PSQLUINTEGER;rgfRowStatus:PSQLUSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
+           fFetchType:SQLUSMALLINT;irow:SQLLEN;
+           pcrow:PSQLULEN;rgfRowStatus:PSQLUSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
 
 type   TSQLGetData=function (StatementHandle:SQLHSTMT;
            ColumnNumber:SQLUSMALLINT;TargetType:SQLSMALLINT;
-           TargetValue:SQLPOINTER;BufferLength:SQLINTEGER;
-           StrLen_or_Ind:PSQLINTEGER):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
+           TargetValue:SQLPOINTER;BufferLength:SQLLEN;
+           StrLen_or_Ind:PSQLLEN):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
 
 type   TSQLSetStmtAttr=function (StatementHandle:SQLHSTMT;
            Attribute:SQLINTEGER;Value:SQLPOINTER;
@@ -1129,8 +1141,8 @@ type   TSQLSetDescField=function (DescriptorHandle:SQLHDESC;
 
 type   TSQLSetDescRec=function (DescriptorHandle:SQLHDESC;
            RecNumber:SQLSMALLINT; DescType, SubType:SQLSMALLINT;
-           Length:SQLINTEGER; Precision, Scale: SQLSMALLINT;
-           DataPtr:SQLPOINTER; StringLengthPtr,IndicatorPtr:PSQLINTEGER):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
+           Length:SQLLEN; Precision, Scale: SQLSMALLINT;
+           DataPtr:SQLPOINTER; StringLengthPtr,IndicatorPtr:PSQLLEN):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
 
 type   tSQLGetInfo=function (ConnectionHandle:SQLHDBC;
            InfoType:SQLUSMALLINT;InfoValue:SQLPOINTER;
@@ -1140,16 +1152,16 @@ type   TSQLBulkOperations=function (StatementHandle: SQLHSTMT;
            Operation:SQLSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
 
 type   TSQLPutData=function (StatementHandle:SQLHSTMT;
-           Data:SQLPOINTER;StrLen_or_Ind:SQLINTEGER):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
+           Data:SQLPOINTER;StrLen_or_Ind:SQLLEN):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
 
 type   TSQLBindCol=function (StatementHandle:SQLHSTMT;
            ColumnNumber:SQLUSMALLINT;TargetType:SQLSMALLINT;
-           TargetValue:SQLPOINTER;BufferLength:SQLINTEGER;
-           StrLen_or_Ind:PSQLINTEGER):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
+           TargetValue:SQLPOINTER;BufferLength:SQLLEN;
+           StrLen_or_Ind:PSQLLEN):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
 
-type   TSQLSetPos=function (hstmt:SQLHSTMT;
-           irow:SQLUSMALLINT;fOption:SQLUSMALLINT;
-           fLock:SQLUSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
+type   TSQLSetPos=function (StatementHandle:SQLHSTMT;
+           RowNumber:SQLSETPOSIROW; Operation:SQLUSMALLINT;
+           LockType:SQLUSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
 
 type   TSQLDataSources=function (EnvironmentHandle:SQLHENV;
            Direction:SQLUSMALLINT;ServerName:PSQLCHAR;
@@ -1175,14 +1187,14 @@ type   TSQLSetCursorName=function (StatementHandle:SQLHSTMT;
            CursorName:PSQLCHAR; NameLength:SQLSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
 
 type   TSQLRowCount=function (StatementHandle:SQLHSTMT;
-           Var RowCount:SQLINTEGER):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
+           var RowCount:SQLLEN):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
 
 type   TSQLBindParameter=function (hstmt:SQLHSTMT;
            ipar:SQLUSMALLINT;fParamType:SQLSMALLINT;
            fCType:SQLSMALLINT;fSqlType:SQLSMALLINT;
-           cbColDef:SQLUINTEGER;ibScale:SQLSMALLINT;
-           rgbValue:SQLPOINTER;cbValueMax:SQLINTEGER;
-           pcbValue:PSQLINTEGER):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
+           cbColDef:SQLULEN;ibScale:SQLSMALLINT;
+           rgbValue:SQLPOINTER;cbValueMax:SQLLEN;
+           pcbValue:PSQLLEN):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
 
 type   TSQLFreeStmt=function (StatementHandle:SQLHSTMT;
            Option:SQLUSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
@@ -1190,7 +1202,7 @@ type   TSQLFreeStmt=function (StatementHandle:SQLHSTMT;
 type   TSQLColAttribute=function (StatementHandle:SQLHSTMT;
            ColumnNumber:SQLUSMALLINT;FieldIdentifier:SQLUSMALLINT;
            CharacterAttribute:PSQLCHAR;BufferLength:SQLSMALLINT;
-           StringLength:PSQLSMALLINT;NumericAttribute:SQLPOINTER):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
+           StringLength:PSQLSMALLINT;NumericAttribute:PSQLLEN):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
 
 type   TSQLEndTran=function (HandleType:SQLSMALLINT;
            Handle:SQLHANDLE;CompletionType:SQLSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};
@@ -1366,26 +1378,26 @@ var    odbcversion:word;
                BufferLength:SQLSMALLINT;
                var NameLength:SQLSMALLINT;
                var DataType:SQLSMALLINT;
-               var ColumnSize:SQLUINTEGER;
+               var ColumnSize:SQLULEN;
                var DecimalDigits:SQLSMALLINT;
                var Nullable:SQLSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
    function SQLFetchScroll(
                StatementHandle:SQLHSTMT;
                FetchOrientation:SQLSMALLINT;
-               FetchOffset:SQLINTEGER):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
+               FetchOffset:SQLLEN):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
    function SQLExtendedFetch(
                hstmt:SQLHSTMT;
                fFetchType:SQLUSMALLINT;
-               irow:SQLINTEGER;
-               pcrow:PSQLUINTEGER;
+               irow:SQLLEN;
+               pcrow:PSQLULEN;
                rgfRowStatus:PSQLUSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
    function SQLGetData(
                StatementHandle:SQLHSTMT;
                ColumnNumber:SQLUSMALLINT;
                TargetType:SQLSMALLINT;
                TargetValue:SQLPOINTER;
-               BufferLength:SQLINTEGER;
-               StrLen_or_Ind:PSQLINTEGER):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
+               BufferLength:SQLLEN;
+               StrLen_or_Ind:PSQLLEN):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
    function SQLSetStmtAttr(
                StatementHandle:SQLHSTMT;
                Attribute:SQLINTEGER;
@@ -1409,19 +1421,19 @@ var    odbcversion:word;
    function SQLPutData(
                StatementHandle:SQLHSTMT;
                Data:SQLPOINTER;
-               StrLen_or_Ind:SQLINTEGER):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
+               StrLen_or_Ind:SQLLEN):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
    function SQLBindCol(
                StatementHandle:SQLHSTMT;
                ColumnNumber:SQLUSMALLINT;
                TargetType:SQLSMALLINT;
                TargetValue:SQLPOINTER;
-               BufferLength:SQLINTEGER;
-               StrLen_or_Ind:PSQLINTEGER):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
+               BufferLength:SQLLEN;
+               StrLen_or_Ind:PSQLLEN):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
    function SQLSetPos(
-               hstmt:SQLHSTMT;
-               irow:SQLUSMALLINT;
-               fOption:SQLUSMALLINT;
-               fLock:SQLUSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
+               StatementHandle:SQLHSTMT;
+               RowNumber:SQLSETPOSIROW;
+               Operation:SQLUSMALLINT;
+               LockType:SQLUSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
    function SQLDataSources(
                EnvironmentHandle:SQLHENV;
                Direction:SQLUSMALLINT;
@@ -1454,18 +1466,18 @@ var    odbcversion:word;
                ):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
    function SQLRowCount(
                StatementHandle:SQLHSTMT;
-               Var RowCount:SQLINTEGER):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
+               var RowCount:SQLLEN):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
    function SQLBindParameter(
                hstmt:SQLHSTMT;
                ipar:SQLUSMALLINT;
                fParamType:SQLSMALLINT;
                fCType:SQLSMALLINT;
                fSqlType:SQLSMALLINT;
-               cbColDef:SQLUINTEGER;
+               cbColDef:SQLULEN;
                ibScale:SQLSMALLINT;
                rgbValue:SQLPOINTER;
-               cbValueMax:SQLINTEGER;
-               pcbValue:PSQLINTEGER):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
+               cbValueMax:SQLLEN;
+               pcbValue:PSQLLEN):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
    function SQLFreeStmt(
                StatementHandle:SQLHSTMT;
                Option:SQLUSMALLINT):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
@@ -1476,7 +1488,7 @@ var    odbcversion:word;
                CharacterAttribute:PSQLCHAR;
                BufferLength:SQLSMALLINT;
                StringLength:PSQLSMALLINT;
-               NumericAttribute:SQLPOINTER):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
+               NumericAttribute:PSQLLEN):SQLRETURN;{$ifdef fpc} extdecl {$else} stdcall {$endif};external odbclib;
 {$ifdef ODBCVER3}
    function SQLEndTran(
                HandleType:SQLSMALLINT;