128 |
|
FOwnsSQLData: boolean; |
129 |
|
FBlobMetaData: IBlobMetaData; |
130 |
|
FArrayMetaData: IArrayMetaData; |
131 |
+ |
FMetadataSize: short; {size of field from metadata} |
132 |
|
FXSQLVAR: PXSQLVAR; { Points to the PXSQLVAR in the owner object } |
133 |
|
protected |
134 |
|
function GetSQLType: cardinal; override; |
145 |
|
function GetIsNullable: boolean; override; |
146 |
|
function GetSQLData: PByte; override; |
147 |
|
function GetDataLength: cardinal; override; |
148 |
+ |
function GetSize: cardinal; override; |
149 |
|
procedure SetIsNull(Value: Boolean); override; |
150 |
|
procedure SetIsNullable(Value: Boolean); override; |
151 |
|
procedure SetSQLData(AValue: PByte; len: cardinal); override; |
385 |
|
Result := FXSQLVAR^.sqllen; |
386 |
|
end; |
387 |
|
|
388 |
+ |
function TIBXSQLVAR.GetSize: cardinal; |
389 |
+ |
begin |
390 |
+ |
Result := FMetadataSize; |
391 |
+ |
end; |
392 |
+ |
|
393 |
|
function TIBXSQLVAR.GetArrayMetaData: IArrayMetaData; |
394 |
|
begin |
395 |
|
if GetSQLType <> SQL_ARRAY then |
463 |
|
FOwnsSQLData := true; |
464 |
|
with FFirebird25ClientAPI, FXSQLVar^ do |
465 |
|
begin |
466 |
+ |
FMetadataSize := sqllen; |
467 |
|
case sqltype and (not 1) of |
468 |
|
SQL_TEXT, SQL_TYPE_DATE, SQL_TYPE_TIME, SQL_TIMESTAMP, |
469 |
|
SQL_BLOB, SQL_ARRAY, SQL_QUAD, SQL_SHORT, SQL_BOOLEAN, |
988 |
|
if (FHandle <> nil) then |
989 |
|
FreeHandle; |
990 |
|
if E is EIBInterBaseError then |
991 |
< |
raise EIBInterBaseError.Create(EIBInterBaseError(E).SQLCode, |
992 |
< |
EIBInterBaseError(E).IBErrorCode, |
985 |
< |
EIBInterBaseError(E).Message + |
986 |
< |
sSQLErrorSeparator + FSQL) |
987 |
< |
else |
988 |
< |
raise; |
991 |
> |
E.Message := E.Message + sSQLErrorSeparator + FSQL; |
992 |
> |
raise; |
993 |
|
end; |
994 |
|
end; |
995 |
|
FPrepared := true; |