diff options
author | Bung <535670947@qq.com> | 2020-05-16 03:00:06 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-15 21:00:06 +0200 |
commit | ce0552c1008c8292c550e7a973c580f416c005ca (patch) | |
tree | 14cca3abc65279b16c3e2b951360e30a520ed233 /lib | |
parent | 9f78f116b2276a367f371ece550f669d64dbe594 (diff) | |
download | Nim-ce0552c1008c8292c550e7a973c580f416c005ca.tar.gz |
fix #9771 (#14357)
* fix #9771 * map SQLLEN SQLULEN * fix proc params take TSqlLen Co-authored-by: bung87 <crc32@qq.com>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/impure/db_odbc.nim | 10 | ||||
-rw-r--r-- | lib/wrappers/odbcsql.nim | 26 |
2 files changed, 19 insertions, 17 deletions
diff --git a/lib/impure/db_odbc.nim b/lib/impure/db_odbc.nim index 7370adbf3..9ff050bfa 100644 --- a/lib/impure/db_odbc.nim +++ b/lib/impure/db_odbc.nim @@ -242,7 +242,7 @@ proc tryExec*(db: var DbConn, query: SqlQuery, args: varargs[string, `$`]): bool try: db.prepareFetchDirect(query, args) var - rCnt = -1 + rCnt:TSqlLen = -1 res = SQLRowCount(db.stmt, rCnt) properFreeResult(SQL_HANDLE_STMT, db.stmt) if res != SQL_SUCCESS: dbError(db) @@ -461,10 +461,10 @@ proc execAffectedRows*(db: var DbConn, query: SqlQuery, var q = dbFormat(query, args) db.sqlCheck(SQLPrepare(db.stmt, q.PSQLCHAR, q.len.TSqlSmallInt)) rawExec(db, query, args) - var rCnt = -1 + var rCnt:TSqlLen = -1 db.sqlCheck(SQLRowCount(db.hDb, rCnt)) properFreeResult(SQL_HANDLE_STMT, db.stmt) - result = rCnt + result = rCnt.int64 proc close*(db: var DbConn) {. tags: [WriteDbEffect], raises: [].} = @@ -489,7 +489,7 @@ proc open*(connection, user, password, database: string): DbConn {. ## Currently the database parameter is ignored, ## but included to match ``open()`` in the other db_xxxxx library modules. var - val: TSqlInteger = SQL_OV_ODBC3 + val = SQL_OV_ODBC3 resLen = 0 result = (hDb: nil, env: nil, stmt: nil) # allocate environment handle @@ -497,7 +497,7 @@ proc open*(connection, user, password, database: string): DbConn {. if res != SQL_SUCCESS: dbError("Error: unable to initialise ODBC environment.") res = SQLSetEnvAttr(result.env, SQL_ATTR_ODBC_VERSION.TSqlInteger, - val, resLen.TSqlInteger) + cast[SqlPointer](val.addr), resLen.TSqlInteger) if res != SQL_SUCCESS: dbError("Error: unable to set ODBC driver version.") # allocate hDb handle res = SQLAllocHandle(SQL_HANDLE_DBC, result.env, result.hDb) diff --git a/lib/wrappers/odbcsql.nim b/lib/wrappers/odbcsql.nim index be56b75d3..393f29ad0 100644 --- a/lib/wrappers/odbcsql.nim +++ b/lib/wrappers/odbcsql.nim @@ -45,8 +45,10 @@ type SqlHDBC* = SqlHandle SqlHStmt* = SqlHandle SqlHDesc* = SqlHandle - TSqlInteger* = int - SqlUInteger* = int + TSqlInteger* = int32 + SqlUInteger* = int32 + TSqlLen* = int64 + TSqlULen* = uint64 SqlPointer* = pointer TSqlReal* = cfloat TSqlDouble* = cdouble @@ -666,7 +668,7 @@ proc SQLAllocHandle*(HandleType: TSqlSmallInt, InputHandle: SqlHandle, OutputHandlePtr: var SqlHandle): TSqlSmallInt{. dynlib: odbclib, importc.} proc SQLSetEnvAttr*(EnvironmentHandle: SqlHEnv, Attribute: TSqlInteger, - Value: TSqlInteger, StringLength: TSqlInteger): TSqlSmallInt{. + Value: SqlPointer, StringLength: TSqlInteger): TSqlSmallInt{. dynlib: odbclib, importc.} proc SQLGetEnvAttr*(EnvironmentHandle: SqlHEnv, Attribute: TSqlInteger, Value: SqlPointer, BufferLength: TSqlInteger, @@ -716,14 +718,14 @@ proc SQLNumResultCols*(StatementHandle: SqlHStmt, ColumnCount: var TSqlSmallInt) proc SQLDescribeCol*(StatementHandle: SqlHStmt, ColumnNumber: SqlUSmallInt, ColumnName: PSQLCHAR, BufferLength: TSqlSmallInt, NameLength: var TSqlSmallInt, DataType: var TSqlSmallInt, - ColumnSize: var SqlUInteger, + ColumnSize: var TSQLULEN, DecimalDigits: var TSqlSmallInt, Nullable: var TSqlSmallInt): TSqlSmallInt{. dynlib: odbclib, importc.} proc SQLFetchScroll*(StatementHandle: SqlHStmt, FetchOrientation: TSqlSmallInt, FetchOffset: TSqlInteger): TSqlSmallInt{.dynlib: odbclib, importc.} proc SQLExtendedFetch*(hstmt: SqlHStmt, fFetchType: SqlUSmallInt, - irow: TSqlInteger, pcrow: PSQLUINTEGER, + irow: TSqlInteger, pcrow: var TSQLULEN, rgfRowStatus: PSQLUSMALLINT): TSqlSmallInt{.dynlib: odbclib, importc.} proc SQLGetData*(StatementHandle: SqlHStmt, ColumnNumber: SqlUSmallInt, @@ -741,13 +743,13 @@ proc SQLGetInfo*(ConnectionHandle: SqlHDBC, InfoType: SqlUSmallInt, InfoValue: SqlPointer, BufferLength: TSqlSmallInt, StringLength: PSQLSMALLINT): TSqlSmallInt{.dynlib: odbclib, importc.} -proc SQLBulkOperations*(StatementHandle: SqlHStmt, Operation: TSqlSmallInt): TSqlSmallInt{. +proc SQLBulkOperations*(StatementHandle: SqlHStmt, Operation: SqlUSmallInt): TSqlSmallInt{. dynlib: odbclib, importc.} proc SQLPutData*(StatementHandle: SqlHStmt, Data: SqlPointer, - StrLen_or_Ind: TSqlInteger): TSqlSmallInt{.dynlib: odbclib, importc.} + StrLen_or_Ind: TSQLLEN): TSqlSmallInt{.dynlib: odbclib, importc.} proc SQLBindCol*(StatementHandle: SqlHStmt, ColumnNumber: SqlUSmallInt, TargetType: TSqlSmallInt, TargetValue: SqlPointer, - BufferLength: TSqlInteger, StrLen_or_Ind: PSQLINTEGER): TSqlSmallInt{. + BufferLength: TSqlLEN, StrLen_or_Ind: PSQLINTEGER): TSqlSmallInt{. dynlib: odbclib, importc.} proc SQLSetPos*(hstmt: SqlHStmt, irow: SqlUSmallInt, fOption: SqlUSmallInt, fLock: SqlUSmallInt): TSqlSmallInt{.dynlib: odbclib, importc.} @@ -770,13 +772,13 @@ proc SQLGetCursorName*(StatementHandle: SqlHStmt, CursorName: PSQLCHAR, proc SQLSetCursorName*(StatementHandle: SqlHStmt, CursorName: PSQLCHAR, NameLength: TSqlSmallInt): TSqlSmallInt{.dynlib: odbclib, importc.} -proc SQLRowCount*(StatementHandle: SqlHStmt, RowCount: var TSqlInteger): TSqlSmallInt{. +proc SQLRowCount*(StatementHandle: SqlHStmt, RowCount: var TSQLLEN): TSqlSmallInt{. dynlib: odbclib, importc.} proc SQLBindParameter*(hstmt: SqlHStmt, ipar: SqlUSmallInt, fParamType: TSqlSmallInt, fCType: TSqlSmallInt, - fSqlType: TSqlSmallInt, cbColDef: SqlUInteger, + fSqlType: TSqlSmallInt, cbColDef: TSQLULEN, ibScale: TSqlSmallInt, rgbValue: SqlPointer, - cbValueMax: TSqlInteger, pcbValue: PSQLINTEGER): TSqlSmallInt{. + cbValueMax: TSQLLEN, pcbValue: var TSQLLEN): TSqlSmallInt{. dynlib: odbclib, importc.} proc SQLFreeStmt*(StatementHandle: SqlHStmt, Option: SqlUSmallInt): TSqlSmallInt{. dynlib: odbclib, importc.} @@ -784,7 +786,7 @@ proc SQLColAttribute*(StatementHandle: SqlHStmt, ColumnNumber: SqlUSmallInt, FieldIdentifier: SqlUSmallInt, CharacterAttribute: PSQLCHAR, BufferLength: TSqlSmallInt, StringLength: PSQLSMALLINT, - NumericAttribute: SqlPointer): TSqlSmallInt{. + NumericAttribute: TSQLLEN): TSqlSmallInt{. dynlib: odbclib, importc.} proc SQLEndTran*(HandleType: TSqlSmallInt, Handle: SqlHandle, CompletionType: TSqlSmallInt): TSqlSmallInt{.dynlib: odbclib, |