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

fcl-db: mssql: very basic support for variant data type, rather than raising exception.
(as dbconvert does not support SYBVARIANT atm, use direct Move to move raw data into blob buffer)

git-svn-id: trunk@22941 -

lacak 12 жил өмнө
parent
commit
70b030c9f1

+ 4 - 4
packages/fcl-db/src/sqldb/mssql/mssqlconn.pp

@@ -593,6 +593,7 @@ begin
     SQLBINARY:           Result:=ftBytes;
     SQLBINARY:           Result:=ftBytes;
     SQLVARBINARY:        Result:=ftVarBytes;
     SQLVARBINARY:        Result:=ftVarBytes;
     SYBUNIQUE:           Result:=ftGuid;
     SYBUNIQUE:           Result:=ftGuid;
+    SYBVARIANT:          Result:=ftBlob;
   else
   else
     DatabaseErrorFmt('Unsupported SQL DataType %d "%s"', [SQLDataType, dbprtype(SQLDataType)]);
     DatabaseErrorFmt('Unsupported SQL DataType %d "%s"', [SQLDataType, dbprtype(SQLDataType)]);
     Result:=ftUnknown;
     Result:=ftUnknown;
@@ -807,15 +808,14 @@ var data: PByte;
     datalen: DBINT;
     datalen: DBINT;
     srctype: INT;
     srctype: INT;
 begin
 begin
-  //see also LoadField
+  // see also LoadField
   srctype:=dbcoltype(FDBProc, FieldDef.FieldNo);
   srctype:=dbcoltype(FDBProc, FieldDef.FieldNo);
   data:=dbdata(FDBProc, FieldDef.FieldNo);
   data:=dbdata(FDBProc, FieldDef.FieldNo);
   datalen:=dbdatlen(FDBProc, FieldDef.FieldNo);
   datalen:=dbdatlen(FDBProc, FieldDef.FieldNo);
 
 
   ReAllocMem(ABlobBuf^.BlobBuffer^.Buffer, datalen);
   ReAllocMem(ABlobBuf^.BlobBuffer^.Buffer, datalen);
-
-  ABlobBuf^.BlobBuffer^.Size :=
-    dbconvert(FDBProc, srctype, data , datalen, srctype, ABlobBuf^.BlobBuffer^.Buffer, datalen);
+  Move(data^, ABlobBuf^.BlobBuffer^.Buffer^, datalen);
+  ABlobBuf^.BlobBuffer^.Size := datalen;
 end;
 end;
 
 
 procedure TMSSQLConnection.FreeFldBuffers(cursor: TSQLCursor);
 procedure TMSSQLConnection.FreeFldBuffers(cursor: TSQLCursor);