ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/public/ibx/trunk/fbintf/client/3.0/FB30Statement.pas
(Generate patch)

Comparing ibx/trunk/fbintf/client/3.0/FB30Statement.pas (file contents):
Revision 55 by tony, Mon Jan 9 15:31:51 2017 UTC vs.
Revision 56 by tony, Mon Mar 6 10:20:02 2017 UTC

# Line 25 | Line 25
25   *
26   *)
27   unit FB30Statement;
28 + {$IFDEF MSWINDOWS}
29 + {$DEFINE WINDOWS}
30 + {$ENDIF}
31  
32   {$IFDEF FPC}
33 < {$mode objfpc}{$H+}
33 > {$mode delphi}
34   {$codepage UTF8}
35   {$interfaces COM}
36   {$ENDIF}
# Line 94 | Line 97 | type
97      {SQL Var Type Data}
98      FSQLType: cardinal;
99      FSQLSubType: integer;
100 <    FSQLData: PChar; {Address of SQL Data in Message Buffer}
100 >    FSQLData: PByte; {Address of SQL Data in Message Buffer}
101      FSQLNullIndicator: PShort; {Address of null indicator}
102      FDataLength: integer;
103      FNullable: boolean;
104      FScale: integer;
105      FCharSetID: cardinal;
106 <    FRelationName: string;
107 <    FFieldName: string;
106 >    FRelationName: AnsiString;
107 >    FFieldName: AnsiString;
108  
109      protected
110       function GetSQLType: cardinal; override;
111       function GetSubtype: integer; override;
112 <     function GetAliasName: string;  override;
113 <     function GetFieldName: string; override;
114 <     function GetOwnerName: string;  override;
115 <     function GetRelationName: string;  override;
112 >     function GetAliasName: AnsiString;  override;
113 >     function GetFieldName: AnsiString; override;
114 >     function GetOwnerName: AnsiString;  override;
115 >     function GetRelationName: AnsiString;  override;
116       function GetScale: integer; override;
117       function GetCharSetID: cardinal; override;
118       function GetCodePage: TSystemCodePage; override;
119       function GetIsNull: Boolean;   override;
120       function GetIsNullable: boolean; override;
121 <     function GetSQLData: PChar;  override;
121 >     function GetSQLData: PByte;  override;
122       function GetDataLength: cardinal; override;
123       procedure SetIsNull(Value: Boolean); override;
124       procedure SetIsNullable(Value: Boolean);  override;
125 <     procedure SetSQLData(AValue: PChar; len: cardinal); override;
125 >     procedure SetSQLData(AValue: PByte; len: cardinal); override;
126       procedure SetScale(aValue: integer); override;
127       procedure SetDataLength(len: cardinal); override;
128       procedure SetSQLType(aValue: cardinal); override;
# Line 170 | Line 173 | type
173  
174    TIBXINPUTSQLDA = class(TIBXSQLDA)
175    private
176 <    FMessageBuffer: PChar; {Message Buffer}
176 >    FMessageBuffer: PByte; {Message Buffer}
177      FMsgLength: integer; {Message Buffer length}
178      FCurMetaData: Firebird.IMessageMetadata;
179      procedure FreeMessageBuffer;
180 <    function GetMessageBuffer: PChar;
180 >    function GetMessageBuffer: PByte;
181      function GetMetaData: Firebird.IMessageMetadata;
182      function GetModified: Boolean;
183      function GetMsgLength: integer;
# Line 188 | Line 191 | type
191      procedure Changed; override;
192      function IsInputDataArea: boolean; override;
193      property MetaData: Firebird.IMessageMetadata read GetMetaData;
194 <    property MessageBuffer: PChar read GetMessageBuffer;
194 >    property MessageBuffer: PByte read GetMessageBuffer;
195      property MsgLength: integer read GetMsgLength;
196    end;
197  
# Line 197 | Line 200 | type
200    TIBXOUTPUTSQLDA = class(TIBXSQLDA)
201    private
202      FTransaction: TFB30Transaction; {transaction used to execute the statement}
203 <    FMessageBuffer: PChar; {Message Buffer}
203 >    FMessageBuffer: PByte; {Message Buffer}
204      FMsgLength: integer; {Message Buffer length}
205    protected
206      procedure FreeXSQLDA; override;
207    public
208      procedure Bind(aMetaData: Firebird.IMessageMetadata);
209      procedure GetData(index: integer; var aIsNull: boolean; var len: short;
210 <      var data: PChar); override;
210 >      var data: PByte); override;
211      function IsInputDataArea: boolean; override;
212 <    property MessageBuffer: PChar read FMessageBuffer;
212 >    property MessageBuffer: PByte read FMessageBuffer;
213      property MsgLength: integer read FMsgLength;
214    end;
215  
# Line 221 | Line 224 | type
224      destructor Destroy; override;
225      {IResultSet}
226      function FetchNext: boolean;
227 <    function GetCursorName: string;
227 >    function GetCursorName: AnsiString;
228      function GetTransaction: ITransaction; override;
229      function IsEof: boolean;
230      procedure Close;
# Line 246 | Line 249 | type
249      procedure InternalClose(Force: boolean); override;
250    public
251      constructor Create(Attachment: TFB30Attachment; Transaction: ITransaction;
252 <      sql: string; aSQLDialect: integer);
252 >      sql: AnsiString; aSQLDialect: integer);
253      constructor CreateWithParameterNames(Attachment: TFB30Attachment; Transaction: ITransaction;
254 <      sql: string;  aSQLDialect: integer; GenerateParamNames: boolean =false);
254 >      sql: AnsiString;  aSQLDialect: integer; GenerateParamNames: boolean =false);
255      destructor Destroy; override;
256      function FetchNext: boolean;
257      property StatementIntf: Firebird.IStatement read FStatementIntf;
# Line 257 | Line 260 | type
260      {IStatement}
261      function GetSQLParams: ISQLParams; override;
262      function GetMetaData: IMetaData; override;
263 <    function GetPlan: String;
263 >    function GetPlan: AnsiString;
264      function IsPrepared: boolean;
265      function CreateBlob(column: TColumnMetaData): IBlob; override;
266      function CreateArray(column: TColumnMetaData): IArray; override;
# Line 290 | Line 293 | begin
293    Result := FSQLSubType;
294   end;
295  
296 < function TIBXSQLVAR.GetAliasName: string;
296 > function TIBXSQLVAR.GetAliasName: AnsiString;
297   begin
298    with Firebird30ClientAPI do
299    begin
# Line 299 | Line 302 | begin
302    end;
303   end;
304  
305 < function TIBXSQLVAR.GetFieldName: string;
305 > function TIBXSQLVAR.GetFieldName: AnsiString;
306   begin
307    Result := FFieldName;
308   end;
309  
310 < function TIBXSQLVAR.GetOwnerName: string;
310 > function TIBXSQLVAR.GetOwnerName: AnsiString;
311   begin
312    with Firebird30ClientAPI do
313    begin
# Line 313 | Line 316 | begin
316    end;
317   end;
318  
319 < function TIBXSQLVAR.GetRelationName: string;
319 > function TIBXSQLVAR.GetRelationName: AnsiString;
320   begin
321    Result := FRelationName;
322   end;
# Line 359 | Line 362 | begin
362    Result := FSQLNullIndicator <> nil;
363   end;
364  
365 < function TIBXSQLVAR.GetSQLData: PChar;
365 > function TIBXSQLVAR.GetSQLData: PByte;
366   begin
367    Result := FSQLData;
368   end;
# Line 420 | Line 423 | begin
423      FSQLNullIndicator := nil;
424   end;
425  
426 < procedure TIBXSQLVAR.SetSQLData(AValue: PChar; len: cardinal);
426 > procedure TIBXSQLVAR.SetSQLData(AValue: PByte; len: cardinal);
427   begin
428    if FOwnsSQLData then
429      FreeMem(FSQLData);
# Line 543 | Line 546 | begin
546        FResults.Column[i].RowChange;
547   end;
548  
549 < function TResultSet.GetCursorName: string;
549 > function TResultSet.GetCursorName: AnsiString;
550   begin
551    IBError(ibxeNotSupported,[nil]);
552    Result := '';
# Line 595 | Line 598 | begin
598    FMsgLength := 0;
599   end;
600  
601 < function TIBXINPUTSQLDA.GetMessageBuffer: PChar;
601 > function TIBXINPUTSQLDA.GetMessageBuffer: PByte;
602   begin
603    PackBuffer;
604    Result := FMessageBuffer;
# Line 817 | Line 820 | begin
820   end;
821  
822   procedure TIBXOUTPUTSQLDA.GetData(index: integer; var aIsNull: boolean;
823 <  var len: short; var data: PChar);
823 >  var len: short; var data: PByte);
824   begin
825    with TIBXSQLVAR(Column[index]) do
826    begin
# Line 984 | Line 987 | begin
987          FStatementIntf := (GetAttachment as TFB30Attachment).AttachmentIntf.prepare(StatusIntf,
988                              (FTransactionIntf as TFB30Transaction).TransactionIntf,
989                              Length(FProcessedSQL),
990 <                            PChar(FProcessedSQL),
990 >                            PAnsiChar(FProcessedSQL),
991                              FSQLDialect,
992                              Firebird.IStatement.PREPARE_PREFETCH_METADATA);
993        end
# Line 992 | Line 995 | begin
995        FStatementIntf := (GetAttachment as TFB30Attachment).AttachmentIntf.prepare(StatusIntf,
996                            (FTransactionIntf as TFB30Transaction).TransactionIntf,
997                            Length(FSQL),
998 <                          PChar(FSQL),
998 >                          PAnsiChar(FSQL),
999                            FSQLDialect,
1000                            Firebird.IStatement.PREPARE_PREFETCH_METADATA);
1001        Check4DataBaseError;
# Line 1211 | Line 1214 | begin
1214        if not Force then Check4DataBaseError;
1215      end;
1216    finally
1217 <    if (FSQLRecord.FTransaction <> nil) and (FSQLRecord.FTransaction <> FTransactionIntf) then
1217 >    if (FSQLRecord.FTransaction <> nil) and (FSQLRecord.FTransaction <> (FTransactionIntf as TFB30Transaction)) then
1218        RemoveMonitor(FSQLRecord.FTransaction);
1219      FOpen := False;
1220      FExecTransactionIntf := nil;
# Line 1222 | Line 1225 | begin
1225   end;
1226  
1227   constructor TFB30Statement.Create(Attachment: TFB30Attachment;
1228 <  Transaction: ITransaction; sql: string; aSQLDialect: integer);
1228 >  Transaction: ITransaction; sql: AnsiString; aSQLDialect: integer);
1229   begin
1230    inherited Create(Attachment,Transaction,sql,aSQLDialect);
1231    FSQLParams := TIBXINPUTSQLDA.Create(self);
# Line 1231 | Line 1234 | begin
1234   end;
1235  
1236   constructor TFB30Statement.CreateWithParameterNames(
1237 <  Attachment: TFB30Attachment; Transaction: ITransaction; sql: string;
1237 >  Attachment: TFB30Attachment; Transaction: ITransaction; sql: AnsiString;
1238    aSQLDialect: integer; GenerateParamNames: boolean);
1239   begin
1240    inherited CreateWithParameterNames(Attachment,Transaction,sql,aSQLDialect,GenerateParamNames);
# Line 1304 | Line 1307 | begin
1307    Result := TMetaData(GetInterface(1));
1308   end;
1309  
1310 < function TFB30Statement.GetPlan: String;
1310 > function TFB30Statement.GetPlan: AnsiString;
1311   begin
1312    CheckHandle;
1313    if (not (FSQLStatementType in [SQLSelect, SQLSelectForUpdate,

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines