119 |
|
function GetSQLType: cardinal; virtual; abstract; |
120 |
|
function GetSQLTypeName: AnsiString; overload; |
121 |
|
class function GetSQLTypeName(SQLType: short): AnsiString; overload; |
122 |
+ |
function GetStrDataLength: short; |
123 |
|
function GetName: AnsiString; virtual; abstract; |
124 |
|
function GetScale: integer; virtual; abstract; |
125 |
|
function GetAsBoolean: boolean; |
293 |
|
FIBXSQLVAR: TSQLVarData; |
294 |
|
FOwner: IUnknown; {Keep reference to ensure Metadata/statement not discarded} |
295 |
|
FPrepareSeqNo: integer; |
295 |
– |
FStatement: IStatement; |
296 |
|
FChangeSeqNo: integer; |
297 |
|
protected |
298 |
|
procedure CheckActive; override; |
304 |
|
constructor Create(aOwner: IUnknown; aIBXSQLVAR: TSQLVarData); |
305 |
|
destructor Destroy; override; |
306 |
|
function GetSQLDialect: integer; override; |
307 |
– |
property Statement: IStatement read FStatement; |
307 |
|
|
308 |
|
public |
309 |
|
{IColumnMetaData} |
321 |
|
function GetSize: cardinal; |
322 |
|
function GetArrayMetaData: IArrayMetaData; |
323 |
|
function GetBlobMetaData: IBlobMetaData; |
324 |
+ |
function GetStatement: IStatement; |
325 |
+ |
function GetTransaction: ITransaction; virtual; |
326 |
|
property Name: AnsiString read GetName; |
327 |
|
property Size: cardinal read GetSize; |
328 |
|
property CharSetID: cardinal read getCharSetID; |
329 |
|
property SQLSubtype: integer read getSubtype; |
330 |
|
property IsNullable: Boolean read GetIsNullable; |
331 |
+ |
public |
332 |
+ |
property Statement: IStatement read GetStatement; |
333 |
|
end; |
334 |
|
|
335 |
|
{ TIBSQLData } |
336 |
|
|
337 |
|
TIBSQLData = class(TColumnMetaData,ISQLData) |
338 |
+ |
private |
339 |
+ |
FTransaction: ITransaction; |
340 |
|
protected |
341 |
|
procedure CheckActive; override; |
342 |
|
public |
343 |
+ |
function GetTransaction: ITransaction; override; |
344 |
|
function GetIsNull: Boolean; override; |
345 |
|
function GetAsArray: IArray; |
346 |
|
function GetAsBlob: IBlob; overload; |
427 |
|
function getSQLParam(index: integer): ISQLParam; |
428 |
|
function ByName(Idx: AnsiString): ISQLParam ; |
429 |
|
function GetModified: Boolean; |
430 |
+ |
function GetHasCaseSensitiveParams: Boolean; |
431 |
|
end; |
432 |
|
|
433 |
|
{ TResults } |
449 |
|
function ByName(Idx: AnsiString): ISQLData; |
450 |
|
function getSQLData(index: integer): ISQLData; |
451 |
|
procedure GetData(index: integer; var IsNull:boolean; var len: short; var data: PByte); |
452 |
+ |
function GetStatement: IStatement; |
453 |
|
function GetTransaction: ITransaction; virtual; |
454 |
|
procedure SetRetainInterfaces(aValue: boolean); |
455 |
|
end; |
956 |
|
end; |
957 |
|
end; |
958 |
|
|
959 |
+ |
function TSQLDataItem.GetStrDataLength: short; |
960 |
+ |
begin |
961 |
+ |
with FFirebirdClientAPI do |
962 |
+ |
if SQLType = SQL_VARYING then |
963 |
+ |
Result := DecodeInteger(SQLData, 2) |
964 |
+ |
else |
965 |
+ |
Result := DataLength; |
966 |
+ |
end; |
967 |
+ |
|
968 |
|
function TSQLDataItem.GetAsBoolean: boolean; |
969 |
|
begin |
970 |
|
CheckActive; |
1690 |
|
result := FIBXSQLVAR.GetBlobMetaData; |
1691 |
|
end; |
1692 |
|
|
1693 |
+ |
function TColumnMetaData.GetStatement: IStatement; |
1694 |
+ |
begin |
1695 |
+ |
Result := FIBXSQLVAR.GetStatement; |
1696 |
+ |
end; |
1697 |
+ |
|
1698 |
+ |
function TColumnMetaData.GetTransaction: ITransaction; |
1699 |
+ |
begin |
1700 |
+ |
Result := GetStatement.GetTransaction; |
1701 |
+ |
end; |
1702 |
+ |
|
1703 |
|
{ TIBSQLData } |
1704 |
|
|
1705 |
|
procedure TIBSQLData.CheckActive; |
1719 |
|
IBError(ibxeBOF,[nil]); |
1720 |
|
end; |
1721 |
|
|
1722 |
+ |
function TIBSQLData.GetTransaction: ITransaction; |
1723 |
+ |
begin |
1724 |
+ |
if FTransaction = nil then |
1725 |
+ |
Result := inherited GetTransaction |
1726 |
+ |
else |
1727 |
+ |
Result := FTransaction; |
1728 |
+ |
end; |
1729 |
+ |
|
1730 |
|
function TIBSQLData.GetIsNull: Boolean; |
1731 |
|
begin |
1732 |
|
CheckActive; |
2427 |
|
end; |
2428 |
|
end; |
2429 |
|
|
2430 |
+ |
function TSQLParams.GetHasCaseSensitiveParams: Boolean; |
2431 |
+ |
begin |
2432 |
+ |
Result := FSQLParams.CaseSensitiveParams; |
2433 |
+ |
end; |
2434 |
+ |
|
2435 |
|
{ TResults } |
2436 |
|
|
2437 |
|
procedure TResults.CheckActive; |
2450 |
|
end; |
2451 |
|
|
2452 |
|
function TResults.GetISQLData(aIBXSQLVAR: TSQLVarData): ISQLData; |
2453 |
+ |
var col: TIBSQLData; |
2454 |
|
begin |
2455 |
|
if (aIBXSQLVAR.Index < 0) or (aIBXSQLVAR.Index >= getCount) then |
2456 |
|
IBError(ibxeInvalidColumnIndex,[nil]); |
2457 |
|
|
2458 |
|
if not HasInterface(aIBXSQLVAR.Index) then |
2459 |
|
AddInterface(aIBXSQLVAR.Index, TIBSQLData.Create(self,aIBXSQLVAR)); |
2460 |
< |
Result := TIBSQLData(GetInterface(aIBXSQLVAR.Index)); |
2460 |
> |
col := TIBSQLData(GetInterface(aIBXSQLVAR.Index)); |
2461 |
> |
col.FTransaction := GetTransaction; |
2462 |
> |
Result := col; |
2463 |
|
end; |
2464 |
|
|
2465 |
|
constructor TResults.Create(aResults: TSQLDataArea); |
2516 |
|
FResults.GetData(index,IsNull, len,data); |
2517 |
|
end; |
2518 |
|
|
2519 |
+ |
function TResults.GetStatement: IStatement; |
2520 |
+ |
begin |
2521 |
+ |
Result := FStatement; |
2522 |
+ |
end; |
2523 |
+ |
|
2524 |
|
function TResults.GetTransaction: ITransaction; |
2525 |
|
begin |
2526 |
|
Result := FStatement.GetTransaction; |