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 |
+ |
function GetAttachment: IAttachment; override; |
150 |
+ |
function GetDefaultTextSQLType: cardinal; override; |
151 |
|
procedure SetIsNull(Value: Boolean); override; |
152 |
|
procedure SetIsNullable(Value: Boolean); override; |
153 |
|
procedure SetSQLData(AValue: PByte; len: cardinal); override; |
167 |
|
procedure Initialize; override; |
168 |
|
|
169 |
|
property Statement: TFB25Statement read FStatement; |
170 |
+ |
property SQLType: cardinal read GetSQLType write SetSQLType; |
171 |
|
end; |
172 |
|
|
173 |
|
TIBXINPUTSQLDA = class; |
388 |
|
Result := FXSQLVAR^.sqllen; |
389 |
|
end; |
390 |
|
|
391 |
+ |
function TIBXSQLVAR.GetSize: cardinal; |
392 |
+ |
begin |
393 |
+ |
Result := FMetadataSize; |
394 |
+ |
end; |
395 |
+ |
|
396 |
+ |
function TIBXSQLVAR.GetAttachment: IAttachment; |
397 |
+ |
begin |
398 |
+ |
Result := FStatement.GetAttachment; |
399 |
+ |
end; |
400 |
+ |
|
401 |
|
function TIBXSQLVAR.GetArrayMetaData: IArrayMetaData; |
402 |
|
begin |
403 |
|
if GetSQLType <> SQL_ARRAY then |
471 |
|
FOwnsSQLData := true; |
472 |
|
with FFirebird25ClientAPI, FXSQLVar^ do |
473 |
|
begin |
474 |
+ |
FMetadataSize := sqllen; |
475 |
|
case sqltype and (not 1) of |
476 |
|
SQL_TEXT, SQL_TYPE_DATE, SQL_TYPE_TIME, SQL_TIMESTAMP, |
477 |
|
SQL_BLOB, SQL_ARRAY, SQL_QUAD, SQL_SHORT, SQL_BOOLEAN, |
583 |
|
end; |
584 |
|
end; |
585 |
|
|
586 |
+ |
function TIBXSQLVAR.GetDefaultTextSQLType: cardinal; |
587 |
+ |
begin |
588 |
+ |
Result := SQL_TEXT; |
589 |
+ |
end; |
590 |
+ |
|
591 |
|
constructor TIBXSQLVAR.Create(aParent: TIBXSQLDA; aIndex: integer); |
592 |
|
begin |
593 |
|
inherited Create(aParent,aIndex); |
1001 |
|
if (FHandle <> nil) then |
1002 |
|
FreeHandle; |
1003 |
|
if E is EIBInterBaseError then |
1004 |
< |
raise EIBInterBaseError.Create(EIBInterBaseError(E).SQLCode, |
1005 |
< |
EIBInterBaseError(E).IBErrorCode, |
985 |
< |
EIBInterBaseError(E).Message + |
986 |
< |
sSQLErrorSeparator + FSQL) |
987 |
< |
else |
988 |
< |
raise; |
1004 |
> |
E.Message := E.Message + sSQLErrorSeparator + FSQL; |
1005 |
> |
raise; |
1006 |
|
end; |
1007 |
|
end; |
1008 |
|
FPrepared := true; |