git-svn-id: https://192.168.0.254/svn/Componentes.Terceros.RemObjects@46 b6239004-a887-0f4b-9937-50029ccdca16
632 lines
25 KiB
ObjectPascal
632 lines
25 KiB
ObjectPascal
unit uDAElevateDBInterfaces;
|
|
|
|
{----------------------------------------------------------------------------}
|
|
{ Data Abstract Library - Core Library }
|
|
{ }
|
|
{ compiler: Delphi 6 and up, Kylix 3 and up }
|
|
{ platform: Win32, Linux }
|
|
{ }
|
|
{ (c)opyright RemObjects Software. all rights reserved. }
|
|
{ }
|
|
{ Using this code requires a valid license of the Data Abstract }
|
|
{ which can be obtained at http://www.remobjects.com. }
|
|
{----------------------------------------------------------------------------}
|
|
|
|
{$I DataAbstract.inc}
|
|
|
|
interface
|
|
|
|
uses uROClasses, uDAInterfaces, uDAEngine;
|
|
|
|
type
|
|
IDAElevateConnection = interface(IDAConnection)
|
|
['{30A997EA-0EBE-41D0-AD13-521DEFCDFE0D}']
|
|
end;
|
|
|
|
TDAElevateDBDriver = class(TDAEDriver)
|
|
protected
|
|
function GetDefaultConnectionType(const AuxDriver: string): string; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF}
|
|
end;
|
|
|
|
TDAElevateDBConnection = class(TDAEConnection, IDAConnection, IDAElevateConnection, IDADirectoryBasedDatabase)
|
|
protected
|
|
Procedure CheckConnected; virtual;
|
|
procedure DoGetTableNames(out List: IROStrings); override;
|
|
procedure DoGetViewNames(out List: IROStrings); override;
|
|
procedure DoGetStoredProcedureNames(out List: IROStrings); override;
|
|
procedure DoGetForeignKeys(out ForeignKeys: TDADriverForeignKeyCollection); override;
|
|
procedure DoGetTableFields(const aTableName: string; out Fields: TDAFieldCollection); override;
|
|
function GetSPSelectSyntax(HasArguments: Boolean): string; override; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF}
|
|
function IdentifierNeedsQuoting(const iIdentifier: string): boolean; override; safecall;
|
|
end;
|
|
|
|
const
|
|
ElevateDB_DriverType = 'ElevateDB';
|
|
ElevateDB_ConfigDBName = 'Configuration';
|
|
|
|
procedure ElevateDB_RegisterDatabase(Query: IDADataset; ADataBaseName: string;aPath: String);
|
|
procedure ElevateDB_DoGetNames(Query: IDADataset; AList: IROStrings; AObjectType: TDAObjecttype);
|
|
procedure ElevateDB_DoGetForeignKeys(Query: IDADataset; ForeignKeys: TDADriverForeignKeyCollection);
|
|
procedure ElevateDB_DoGetTableFields(const aTableName: string; Query: IDADataset; out Fields: TDAFieldCollection);
|
|
function ElevateDB_GetSPSelectSyntax(HasArguments: Boolean): String;
|
|
function ElevateDB_IdentifierNeedsQuoting(const iIdentifier: string): boolean;
|
|
|
|
implementation
|
|
|
|
uses Classes,SysUtils;
|
|
|
|
var
|
|
ElevateDB_reservedwords: array of string;
|
|
|
|
|
|
procedure ElevateDB_RegisterDatabase(Query: IDADataset; ADataBaseName: string;aPath: String);
|
|
const
|
|
s_SQL = 'Select Count(*) from Databases Where name = ''%s''';
|
|
s_DropDataBaseSQL = 'DROP DATABASE "%s" KEEP CONTENTS';
|
|
s_CreateDataBaseSQL = 'CREATE DATABASE "%s" PATH ''%s''';
|
|
begin
|
|
try
|
|
Query.SQL := Format(s_SQL, [aDataBaseName]);
|
|
Query.Open;
|
|
if Query.Fields[0].AsInteger =0 then begin
|
|
Query.Close;
|
|
Query.SQL := Format(s_CreateDataBaseSQL, [aDataBaseName, aPath]);
|
|
Query.Execute;
|
|
end;
|
|
finally
|
|
Query := nil;
|
|
end;
|
|
end;
|
|
|
|
procedure ElevateDB_DoGetNames(Query: IDADataset; AList: IROStrings; AObjectType: TDAObjecttype);
|
|
const
|
|
sDoGetTableNames = 'SELECT Name FROM Information.Tables';
|
|
sDoGetViewNames = 'SELECT Name FROM Information.Views';
|
|
sDoGetProcedures = 'SELECT Name FROM Information.Procedures';
|
|
begin
|
|
try
|
|
case AObjectType of
|
|
dotTable: Query.SQL := sDoGetTableNames;
|
|
dotView: Query.SQL := sDoGetViewNames;
|
|
dotProcedure: Query.SQL := sDoGetProcedures;
|
|
end;
|
|
Query.Open;
|
|
while not Query.Eof do begin
|
|
Alist.Add(Query.Fields[0].AsString);
|
|
Query.Next;
|
|
end;
|
|
finally
|
|
Query := nil;
|
|
end;
|
|
end;
|
|
|
|
procedure ElevateDB_DoGetForeignKeys(Query: IDADataset; ForeignKeys: TDADriverForeignKeyCollection);
|
|
const
|
|
sFK_SQL = 'Select c.tablename,c.name, c.targettable, cc.columnname '+
|
|
'from Information.Constraints as c '+
|
|
'join Information.ConstraintColumns as cc on ((c.tablename = cc.tablename) and (cc.constraintname = c.EnforcingIndex)) '+
|
|
'where c.type = ''foreign key''';
|
|
sPK_SQL = 'Select c.tablename,c.name, c.targettable, cc.columnname '+
|
|
'from Information.Constraints as c '+
|
|
'join Information.ConstraintColumns as cc on ((c.Targettable = cc.tablename) and (cc.constraintname = c.TargetTableConstraint)) '+
|
|
'where c.type = ''foreign key''';
|
|
var
|
|
lCurrConstraint : string;
|
|
lCurrFK : TDADriverForeignKey;
|
|
lList: TStringList;
|
|
i: integer;
|
|
begin
|
|
lList:=TstringList.Create;
|
|
try
|
|
Query.SQL := sFK_SQL;
|
|
Query.Open;
|
|
|
|
lCurrConstraint := '';
|
|
lCurrFK := nil;
|
|
ForeignKeys.Clear;
|
|
while (not Query.EOF) do begin
|
|
if lCurrConstraint <> Query.Fields[0].AsString + '.' + Query.Fields[1].AsString then begin
|
|
lCurrConstraint := Query.Fields[0].AsString + '.' + Query.Fields[1].AsString;
|
|
lCurrFK := ForeignKeys.Add();
|
|
lList.AddObject(lCurrConstraint,lCurrFK);
|
|
with lCurrFK do begin
|
|
Name:=lCurrConstraint;
|
|
PKTable := TrimRight(Query.Fields[2].AsString);
|
|
FKTable := TrimRight(Query.Fields[0].AsString);
|
|
// PKField := TrimRight(Query.Fields[2].AsString);
|
|
FKField := TrimRight(Query.Fields[3].AsString);
|
|
end;
|
|
end else begin
|
|
with lCurrFK do begin
|
|
// PKField := PKField + ';' + TrimRight(Query.Fields[2].AsString);
|
|
FKField := FKField + ';' + TrimRight(Query.Fields[3].AsString);
|
|
end;
|
|
end;
|
|
Query.Next;
|
|
end;
|
|
Llist.Sorted:=True;
|
|
Query.close;
|
|
Query.SQL := sPK_SQL;
|
|
Query.Open;
|
|
while (not Query.EOF) do begin
|
|
lCurrConstraint := Query.Fields[0].AsString + '.' + Query.Fields[1].AsString;
|
|
i:= lList.IndexOf(lCurrConstraint);
|
|
if i <> -1 then begin
|
|
lCurrFK:= TDADriverForeignKey(lList.Objects[i]);
|
|
if lCurrFK.PKField = '' then
|
|
lCurrFK.PKField := TrimRight(Query.Fields[3].AsString)
|
|
else
|
|
lCurrFK.PKField := lCurrFK.PKField + ';' +TrimRight(Query.Fields[3].AsString);
|
|
end;
|
|
Query.Next;
|
|
end;
|
|
finally
|
|
Query := nil;
|
|
LList.Free;
|
|
end;
|
|
end;
|
|
|
|
procedure ElevateDB_DoGetTableFields(const aTableName: string; Query: IDADataset; out Fields: TDAFieldCollection);
|
|
const
|
|
s_sql = 'SELECT tc.Name, tc.Nullable, tc.Identity, cc.ColumnName, tc.scale FROM Information.TableColumns as tc '+
|
|
'LEFT JOIN Information.Constraints AS c ON ((c.TableName = tc.TableName) and (c.Type = ''Primary Key'')) '+
|
|
'LEFT JOIN Information.ConstraintColumns as cc on ((c.tablename = cc.tablename) and (cc.constraintname = c.EnforcingIndex) and (cc.ColumnName = tc.Name)) '+
|
|
'WHERE tc.TableName = ';
|
|
var
|
|
fld: TDAField;
|
|
begin
|
|
Fields := TDAFieldCollection.Create(nil);
|
|
try
|
|
Query.SQL := 'SELECT * FROM ' + aTableName +' WHERE 1=0';
|
|
Query.Open;
|
|
Fields.Assign(Query.Fields);
|
|
Query.Close;
|
|
Query.SQL := s_SQL+ '''' + aTableName+'''';
|
|
Query.Open;
|
|
While not Query.Eof do begin
|
|
fld := Fields.FindField(Trim(Query.Fields[0].AsString));
|
|
if Fld <> nil then begin
|
|
Fld.Required:=Query.Fields[1].AsBoolean;
|
|
if not Query.Fields[2].IsNull and Query.Fields[2].AsBoolean then begin
|
|
if fld.DataType = datInteger then fld.DataType := datAutoInc;
|
|
if fld.DataType = datLargeInt then fld.DataType := datLargeAutoInc;
|
|
end;
|
|
if not Query.Fields[3].IsNull then fld.InPrimaryKey:=True;
|
|
if fld.DataType = datDecimal then begin
|
|
fld.DecimalPrecision:=20;
|
|
fld.DecimalScale:=Query.Fields[4].AsInteger;
|
|
end;
|
|
end;
|
|
Query.Next;
|
|
end;
|
|
finally
|
|
Query:=nil;
|
|
end;
|
|
end;
|
|
|
|
function ElevateDB_GetSPSelectSyntax(HasArguments: Boolean): String;
|
|
begin
|
|
if HasArguments then
|
|
Result:='CALL {0} ({1})'
|
|
else
|
|
Result:='CALL {0} ()';
|
|
end;
|
|
|
|
function ElevateDB_IdentifierNeedsQuoting(const iIdentifier: string): boolean;
|
|
begin
|
|
Result := TestIdentifier(iIdentifier, ElevateDB_reservedwords);
|
|
end;
|
|
|
|
{ TDAElevateDBDriver }
|
|
|
|
function TDAElevateDBDriver.GetDefaultConnectionType(
|
|
const AuxDriver: string): string;
|
|
begin
|
|
Result:= ElevateDB_DriverType;
|
|
end;
|
|
|
|
|
|
{ TDAElevateDBConnection }
|
|
|
|
procedure TDAElevateDBConnection.CheckConnected;
|
|
begin
|
|
if not GetConnected then SetConnected(True);
|
|
end;
|
|
|
|
procedure TDAElevateDBConnection.DoGetForeignKeys(
|
|
out ForeignKeys: TDADriverForeignKeyCollection);
|
|
begin
|
|
CheckConnected;
|
|
inherited;
|
|
ElevateDB_DoGetForeignKeys(GetDatasetClass.Create(Self),ForeignKeys);
|
|
end;
|
|
|
|
procedure TDAElevateDBConnection.DoGetStoredProcedureNames(
|
|
out List: IROStrings);
|
|
begin
|
|
CheckConnected;
|
|
inherited;
|
|
ElevateDB_DoGetNames(GetDatasetClass.Create(Self),List,dotProcedure);
|
|
end;
|
|
|
|
procedure TDAElevateDBConnection.DoGetTableFields(const aTableName: string;
|
|
out Fields: TDAFieldCollection);
|
|
begin
|
|
CheckConnected;
|
|
ElevateDB_DoGetTableFields(QuoteIdentifierIfNeeded(aTableName),GetDatasetClass.Create(Self),Fields);
|
|
end;
|
|
|
|
procedure TDAElevateDBConnection.DoGetTableNames(out List: IROStrings);
|
|
begin
|
|
CheckConnected;
|
|
inherited;
|
|
ElevateDB_DoGetNames(GetDatasetClass.Create(Self),List,dotTable);
|
|
end;
|
|
|
|
procedure TDAElevateDBConnection.DoGetViewNames(out List: IROStrings);
|
|
begin
|
|
CheckConnected;
|
|
inherited;
|
|
ElevateDB_DoGetNames(GetDatasetClass.Create(Self),List,dotView);
|
|
end;
|
|
|
|
function TDAElevateDBConnection.GetSPSelectSyntax(
|
|
HasArguments: Boolean): string;
|
|
begin
|
|
Result := ElevateDB_GetSPSelectSyntax(HasArguments);
|
|
end;
|
|
|
|
procedure ElevateDB_InitializeReservedWords;
|
|
begin
|
|
SetLength(ElevateDB_reservedwords, 335);
|
|
// sorted with TStringList.Sort (bds2007)
|
|
ElevateDB_reservedwords[0] := 'ABS';
|
|
ElevateDB_reservedwords[1] := 'ABSOLUTE';
|
|
ElevateDB_reservedwords[2] := 'ACOS';
|
|
ElevateDB_reservedwords[3] := 'ACTION';
|
|
ElevateDB_reservedwords[4] := 'ADD';
|
|
ElevateDB_reservedwords[5] := 'AFTER';
|
|
ElevateDB_reservedwords[6] := 'ALL';
|
|
ElevateDB_reservedwords[7] := 'ALLTRIM';
|
|
ElevateDB_reservedwords[8] := 'ALTER';
|
|
ElevateDB_reservedwords[9] := 'ALWAYS';
|
|
ElevateDB_reservedwords[10] := 'AM';
|
|
ElevateDB_reservedwords[11] := 'AND';
|
|
ElevateDB_reservedwords[12] := 'AS';
|
|
ElevateDB_reservedwords[13] := 'ASC';
|
|
ElevateDB_reservedwords[14] := 'ASCENDING';
|
|
ElevateDB_reservedwords[15] := 'ASENSITIVE';
|
|
ElevateDB_reservedwords[16] := 'ASIN';
|
|
ElevateDB_reservedwords[17] := 'AT';
|
|
ElevateDB_reservedwords[18] := 'ATAN';
|
|
ElevateDB_reservedwords[19] := 'ATAN2';
|
|
ElevateDB_reservedwords[20] := 'AVG';
|
|
ElevateDB_reservedwords[21] := 'BACKUP';
|
|
ElevateDB_reservedwords[22] := 'BACKUPS';
|
|
ElevateDB_reservedwords[23] := 'BEFORE';
|
|
ElevateDB_reservedwords[24] := 'BEGIN';
|
|
ElevateDB_reservedwords[25] := 'BETWEEN';
|
|
ElevateDB_reservedwords[26] := 'BIGINT';
|
|
ElevateDB_reservedwords[27] := 'BINARY';
|
|
ElevateDB_reservedwords[28] := 'BLOB';
|
|
ElevateDB_reservedwords[29] := 'BLOCK';
|
|
ElevateDB_reservedwords[30] := 'BOF';
|
|
ElevateDB_reservedwords[31] := 'BOOL';
|
|
ElevateDB_reservedwords[32] := 'BOOLEAN';
|
|
ElevateDB_reservedwords[33] := 'BOTH';
|
|
ElevateDB_reservedwords[34] := 'BUFFER';
|
|
ElevateDB_reservedwords[35] := 'BY';
|
|
ElevateDB_reservedwords[36] := 'BYTE';
|
|
ElevateDB_reservedwords[37] := 'CALL';
|
|
ElevateDB_reservedwords[38] := 'CASCADE';
|
|
ElevateDB_reservedwords[39] := 'CASE';
|
|
ElevateDB_reservedwords[40] := 'CAST';
|
|
ElevateDB_reservedwords[41] := 'CATALOG';
|
|
ElevateDB_reservedwords[42] := 'CATEGORY';
|
|
ElevateDB_reservedwords[43] := 'CEIL';
|
|
ElevateDB_reservedwords[44] := 'CEILING';
|
|
ElevateDB_reservedwords[45] := 'CHAR';
|
|
ElevateDB_reservedwords[46] := 'CHAR_LENGTH';
|
|
ElevateDB_reservedwords[47] := 'CHARACTER';
|
|
ElevateDB_reservedwords[48] := 'CHARACTER_LENGTH';
|
|
ElevateDB_reservedwords[49] := 'CHECK';
|
|
ElevateDB_reservedwords[50] := 'CLOB';
|
|
ElevateDB_reservedwords[51] := 'CLOSE';
|
|
ElevateDB_reservedwords[52] := 'COALESCE';
|
|
ElevateDB_reservedwords[53] := 'CODE';
|
|
ElevateDB_reservedwords[54] := 'COLLATE';
|
|
ElevateDB_reservedwords[55] := 'COLUMN';
|
|
ElevateDB_reservedwords[56] := 'COLUMNS';
|
|
ElevateDB_reservedwords[57] := 'COMMIT';
|
|
ElevateDB_reservedwords[58] := 'COMPRESSION';
|
|
ElevateDB_reservedwords[59] := 'COMPUTED';
|
|
ElevateDB_reservedwords[60] := 'CONCAT';
|
|
ElevateDB_reservedwords[61] := 'CONSTRAINT';
|
|
ElevateDB_reservedwords[62] := 'CONSTRAINTS';
|
|
ElevateDB_reservedwords[63] := 'CONTAIN';
|
|
ElevateDB_reservedwords[64] := 'CONTAINS';
|
|
ElevateDB_reservedwords[65] := 'CONTENTS';
|
|
ElevateDB_reservedwords[66] := 'COS';
|
|
ElevateDB_reservedwords[67] := 'COT';
|
|
ElevateDB_reservedwords[68] := 'COUNT';
|
|
ElevateDB_reservedwords[69] := 'CREATE';
|
|
ElevateDB_reservedwords[70] := 'CURRENT';
|
|
ElevateDB_reservedwords[71] := 'CURRENT_DATE';
|
|
ElevateDB_reservedwords[72] := 'CURRENT_GUID';
|
|
ElevateDB_reservedwords[73] := 'CURRENT_TIME';
|
|
ElevateDB_reservedwords[74] := 'CURRENT_TIMESTAMP';
|
|
ElevateDB_reservedwords[75] := 'CURRENT_USER';
|
|
ElevateDB_reservedwords[76] := 'CURSOR';
|
|
ElevateDB_reservedwords[77] := 'CURSOR_SENSITIVITY';
|
|
ElevateDB_reservedwords[78] := 'DAILY';
|
|
ElevateDB_reservedwords[79] := 'DATA';
|
|
ElevateDB_reservedwords[80] := 'DATABASE';
|
|
ElevateDB_reservedwords[81] := 'DATE';
|
|
ElevateDB_reservedwords[82] := 'DAY';
|
|
ElevateDB_reservedwords[83] := 'DAYOFWEEK';
|
|
ElevateDB_reservedwords[84] := 'DAYOFYEAR';
|
|
ElevateDB_reservedwords[85] := 'DAYS';
|
|
ElevateDB_reservedwords[86] := 'DECIMAL';
|
|
ElevateDB_reservedwords[87] := 'DECLARE';
|
|
ElevateDB_reservedwords[88] := 'DEFAULT';
|
|
ElevateDB_reservedwords[89] := 'DEFAULTS';
|
|
ElevateDB_reservedwords[90] := 'DEGREES';
|
|
ElevateDB_reservedwords[91] := 'DELETE';
|
|
ElevateDB_reservedwords[92] := 'DELIMITER';
|
|
ElevateDB_reservedwords[93] := 'DESC';
|
|
ElevateDB_reservedwords[94] := 'DESCENDING';
|
|
ElevateDB_reservedwords[95] := 'DESCRIPTION';
|
|
ElevateDB_reservedwords[96] := 'DISCONNECT';
|
|
ElevateDB_reservedwords[97] := 'DISTINCT';
|
|
ElevateDB_reservedwords[98] := 'DO';
|
|
ElevateDB_reservedwords[99] := 'DOES';
|
|
ElevateDB_reservedwords[100] := 'DOUBLE';
|
|
ElevateDB_reservedwords[101] := 'DROP';
|
|
ElevateDB_reservedwords[102] := 'ELSE';
|
|
ElevateDB_reservedwords[103] := 'ELSEIF';
|
|
ElevateDB_reservedwords[104] := 'EMPTY';
|
|
ElevateDB_reservedwords[105] := 'ENCRYPTED';
|
|
ElevateDB_reservedwords[106] := 'END';
|
|
ElevateDB_reservedwords[107] := 'EOF';
|
|
ElevateDB_reservedwords[108] := 'ERROR';
|
|
ElevateDB_reservedwords[109] := 'ERRORCODE';
|
|
ElevateDB_reservedwords[110] := 'ERRORMSG';
|
|
ElevateDB_reservedwords[111] := 'ESCAPE';
|
|
ElevateDB_reservedwords[112] := 'EVERY';
|
|
ElevateDB_reservedwords[113] := 'EXCEPT';
|
|
ElevateDB_reservedwords[114] := 'EXCEPTION';
|
|
ElevateDB_reservedwords[115] := 'EXCLUDING';
|
|
ElevateDB_reservedwords[116] := 'EXECUTE';
|
|
ElevateDB_reservedwords[117] := 'EXISTS';
|
|
ElevateDB_reservedwords[118] := 'EXP';
|
|
ElevateDB_reservedwords[119] := 'EXPORT';
|
|
ElevateDB_reservedwords[120] := 'EXTERNAL';
|
|
ElevateDB_reservedwords[121] := 'EXTRACT';
|
|
ElevateDB_reservedwords[122] := 'FALSE';
|
|
ElevateDB_reservedwords[123] := 'FETCH';
|
|
ElevateDB_reservedwords[124] := 'FILE';
|
|
ElevateDB_reservedwords[125] := 'FILTER';
|
|
ElevateDB_reservedwords[126] := 'FIRST';
|
|
ElevateDB_reservedwords[127] := 'FLOAT';
|
|
ElevateDB_reservedwords[128] := 'FLOOR';
|
|
ElevateDB_reservedwords[129] := 'FLUSH';
|
|
ElevateDB_reservedwords[130] := 'FOR';
|
|
ElevateDB_reservedwords[131] := 'FOREIGN';
|
|
ElevateDB_reservedwords[132] := 'FORMAT';
|
|
ElevateDB_reservedwords[133] := 'FOURTH';
|
|
ElevateDB_reservedwords[134] := 'FROM';
|
|
ElevateDB_reservedwords[135] := 'FULL';
|
|
ElevateDB_reservedwords[136] := 'FUNCTION';
|
|
ElevateDB_reservedwords[137] := 'GENERATED';
|
|
ElevateDB_reservedwords[138] := 'GENERATOR';
|
|
ElevateDB_reservedwords[139] := 'GRANT';
|
|
ElevateDB_reservedwords[140] := 'GROUP';
|
|
ElevateDB_reservedwords[141] := 'GUID';
|
|
ElevateDB_reservedwords[142] := 'HAVING';
|
|
ElevateDB_reservedwords[143] := 'HEADERS';
|
|
ElevateDB_reservedwords[144] := 'HOUR';
|
|
ElevateDB_reservedwords[145] := 'IDENTITY';
|
|
ElevateDB_reservedwords[146] := 'IF';
|
|
ElevateDB_reservedwords[147] := 'IFNULL';
|
|
ElevateDB_reservedwords[148] := 'IMMEDIATE';
|
|
ElevateDB_reservedwords[149] := 'IMPORT';
|
|
ElevateDB_reservedwords[150] := 'IN';
|
|
ElevateDB_reservedwords[151] := 'INCLUDE';
|
|
ElevateDB_reservedwords[152] := 'INCLUDING';
|
|
ElevateDB_reservedwords[153] := 'INCREMENT';
|
|
ElevateDB_reservedwords[154] := 'INDEX';
|
|
ElevateDB_reservedwords[155] := 'INDEXED';
|
|
ElevateDB_reservedwords[156] := 'INNER';
|
|
ElevateDB_reservedwords[157] := 'INOUT';
|
|
ElevateDB_reservedwords[158] := 'INSENSITIVE';
|
|
ElevateDB_reservedwords[159] := 'INSERT';
|
|
ElevateDB_reservedwords[160] := 'INT';
|
|
ElevateDB_reservedwords[161] := 'INTEGER';
|
|
ElevateDB_reservedwords[162] := 'INTERSECT';
|
|
ElevateDB_reservedwords[163] := 'INTERVAL';
|
|
ElevateDB_reservedwords[164] := 'INTO';
|
|
ElevateDB_reservedwords[165] := 'IS';
|
|
ElevateDB_reservedwords[166] := 'ITERATE';
|
|
ElevateDB_reservedwords[167] := 'JOB';
|
|
ElevateDB_reservedwords[168] := 'JOIN';
|
|
ElevateDB_reservedwords[169] := 'JOINOPTIMIZECOSTS';
|
|
ElevateDB_reservedwords[170] := 'KEEP';
|
|
ElevateDB_reservedwords[171] := 'KEY';
|
|
ElevateDB_reservedwords[172] := 'LARGE';
|
|
ElevateDB_reservedwords[173] := 'LAST';
|
|
ElevateDB_reservedwords[174] := 'LCASE';
|
|
ElevateDB_reservedwords[175] := 'LEADING';
|
|
ElevateDB_reservedwords[176] := 'LEAVE';
|
|
ElevateDB_reservedwords[177] := 'LEFT';
|
|
ElevateDB_reservedwords[178] := 'LENGTH';
|
|
ElevateDB_reservedwords[179] := 'LIKE';
|
|
ElevateDB_reservedwords[180] := 'LITERAL';
|
|
ElevateDB_reservedwords[181] := 'LOCK';
|
|
ElevateDB_reservedwords[182] := 'LOG';
|
|
ElevateDB_reservedwords[183] := 'LOG10';
|
|
ElevateDB_reservedwords[184] := 'LOOP';
|
|
ElevateDB_reservedwords[185] := 'LOWER';
|
|
ElevateDB_reservedwords[186] := 'LTRIM';
|
|
ElevateDB_reservedwords[187] := 'MAINTAIN';
|
|
ElevateDB_reservedwords[188] := 'MAX';
|
|
ElevateDB_reservedwords[189] := 'MEMORY';
|
|
ElevateDB_reservedwords[190] := 'MESSAGE';
|
|
ElevateDB_reservedwords[191] := 'MIGRATE';
|
|
ElevateDB_reservedwords[192] := 'MIGRATOR';
|
|
ElevateDB_reservedwords[193] := 'MIN';
|
|
ElevateDB_reservedwords[194] := 'MINUTE';
|
|
ElevateDB_reservedwords[195] := 'MOD';
|
|
ElevateDB_reservedwords[196] := 'MODULE';
|
|
ElevateDB_reservedwords[197] := 'MONTH';
|
|
ElevateDB_reservedwords[198] := 'MONTHLY';
|
|
ElevateDB_reservedwords[199] := 'MOVE';
|
|
ElevateDB_reservedwords[200] := 'MSECOND';
|
|
ElevateDB_reservedwords[201] := 'NAME';
|
|
ElevateDB_reservedwords[202] := 'NEXT';
|
|
ElevateDB_reservedwords[203] := 'NO';
|
|
ElevateDB_reservedwords[204] := 'NOJOINOPTIMIZE';
|
|
ElevateDB_reservedwords[205] := 'NONE';
|
|
ElevateDB_reservedwords[206] := 'NOT';
|
|
ElevateDB_reservedwords[207] := 'NULL';
|
|
ElevateDB_reservedwords[208] := 'NULLABLE';
|
|
ElevateDB_reservedwords[209] := 'NULLIF';
|
|
ElevateDB_reservedwords[210] := 'NUMERIC';
|
|
ElevateDB_reservedwords[211] := 'OBJECT';
|
|
ElevateDB_reservedwords[212] := 'OCCURS';
|
|
ElevateDB_reservedwords[213] := 'OF';
|
|
ElevateDB_reservedwords[214] := 'ON';
|
|
ElevateDB_reservedwords[215] := 'ONCE';
|
|
ElevateDB_reservedwords[216] := 'OPEN';
|
|
ElevateDB_reservedwords[217] := 'OPTIMIZE';
|
|
ElevateDB_reservedwords[218] := 'OPTION';
|
|
ElevateDB_reservedwords[219] := 'OR';
|
|
ElevateDB_reservedwords[220] := 'ORDER';
|
|
ElevateDB_reservedwords[221] := 'OUT';
|
|
ElevateDB_reservedwords[222] := 'OUTER';
|
|
ElevateDB_reservedwords[223] := 'PAGE';
|
|
ElevateDB_reservedwords[224] := 'PASSWORD';
|
|
ElevateDB_reservedwords[225] := 'PATH';
|
|
ElevateDB_reservedwords[226] := 'PI';
|
|
ElevateDB_reservedwords[227] := 'PM';
|
|
ElevateDB_reservedwords[228] := 'POS';
|
|
ElevateDB_reservedwords[229] := 'POSITION';
|
|
ElevateDB_reservedwords[230] := 'POWER';
|
|
ElevateDB_reservedwords[231] := 'PRECISION';
|
|
ElevateDB_reservedwords[232] := 'PREPARE';
|
|
ElevateDB_reservedwords[233] := 'PRIMARY';
|
|
ElevateDB_reservedwords[234] := 'PRIOR';
|
|
ElevateDB_reservedwords[235] := 'PRIVILEGES';
|
|
ElevateDB_reservedwords[236] := 'PROCEDURE';
|
|
ElevateDB_reservedwords[237] := 'QUOTE';
|
|
ElevateDB_reservedwords[238] := 'RADIANS';
|
|
ElevateDB_reservedwords[239] := 'RAISE';
|
|
ElevateDB_reservedwords[240] := 'RAND';
|
|
ElevateDB_reservedwords[241] := 'RANGE';
|
|
ElevateDB_reservedwords[242] := 'REDEFINE';
|
|
ElevateDB_reservedwords[243] := 'REFERENCES';
|
|
ElevateDB_reservedwords[244] := 'RELATIVE';
|
|
ElevateDB_reservedwords[245] := 'REMOVE';
|
|
ElevateDB_reservedwords[246] := 'REPAIR';
|
|
ElevateDB_reservedwords[247] := 'REPEAT';
|
|
ElevateDB_reservedwords[248] := 'REPLACE';
|
|
ElevateDB_reservedwords[249] := 'RESTORE';
|
|
ElevateDB_reservedwords[250] := 'RESTRICT';
|
|
ElevateDB_reservedwords[251] := 'RESULT';
|
|
ElevateDB_reservedwords[252] := 'RETURN';
|
|
ElevateDB_reservedwords[253] := 'RETURNS';
|
|
ElevateDB_reservedwords[254] := 'REVOKE';
|
|
ElevateDB_reservedwords[255] := 'RIGHT';
|
|
ElevateDB_reservedwords[256] := 'ROLE';
|
|
ElevateDB_reservedwords[257] := 'ROLLBACK';
|
|
ElevateDB_reservedwords[258] := 'ROUND';
|
|
ElevateDB_reservedwords[259] := 'ROW';
|
|
ElevateDB_reservedwords[260] := 'ROWCOUNT';
|
|
ElevateDB_reservedwords[261] := 'ROWS';
|
|
ElevateDB_reservedwords[262] := 'ROWSAFFECTED';
|
|
ElevateDB_reservedwords[263] := 'RTRIM';
|
|
ElevateDB_reservedwords[264] := 'RUN';
|
|
ElevateDB_reservedwords[265] := 'RUNSUM';
|
|
ElevateDB_reservedwords[266] := 'SECOND';
|
|
ElevateDB_reservedwords[267] := 'SELECT';
|
|
ElevateDB_reservedwords[268] := 'SENSITIVE';
|
|
ElevateDB_reservedwords[269] := 'SERVER';
|
|
ElevateDB_reservedwords[270] := 'SESSION';
|
|
ElevateDB_reservedwords[271] := 'SET';
|
|
ElevateDB_reservedwords[272] := 'SIGN';
|
|
ElevateDB_reservedwords[273] := 'SIN';
|
|
ElevateDB_reservedwords[274] := 'SIZE';
|
|
ElevateDB_reservedwords[275] := 'SMALLINT';
|
|
ElevateDB_reservedwords[276] := 'SQRT';
|
|
ElevateDB_reservedwords[277] := 'START';
|
|
ElevateDB_reservedwords[278] := 'STATEMENT';
|
|
ElevateDB_reservedwords[279] := 'STDDEV';
|
|
ElevateDB_reservedwords[280] := 'SUBSTR';
|
|
ElevateDB_reservedwords[281] := 'SUBSTRING';
|
|
ElevateDB_reservedwords[282] := 'SUM';
|
|
ElevateDB_reservedwords[283] := 'SUMSQUARE';
|
|
ElevateDB_reservedwords[284] := 'TABLE';
|
|
ElevateDB_reservedwords[285] := 'TABLES';
|
|
ElevateDB_reservedwords[286] := 'TAN';
|
|
ElevateDB_reservedwords[287] := 'TEMPORARY';
|
|
ElevateDB_reservedwords[288] := 'TEXT';
|
|
ElevateDB_reservedwords[289] := 'TEXTOCCURS';
|
|
ElevateDB_reservedwords[290] := 'TEXTSEARCH';
|
|
ElevateDB_reservedwords[291] := 'THEN';
|
|
ElevateDB_reservedwords[292] := 'THIRD';
|
|
ElevateDB_reservedwords[293] := 'TIME';
|
|
ElevateDB_reservedwords[294] := 'TIMESTAMP';
|
|
ElevateDB_reservedwords[295] := 'TO';
|
|
ElevateDB_reservedwords[296] := 'TOP';
|
|
ElevateDB_reservedwords[297] := 'TRAILING';
|
|
ElevateDB_reservedwords[298] := 'TRANSACTION';
|
|
ElevateDB_reservedwords[299] := 'TRIGGER';
|
|
ElevateDB_reservedwords[300] := 'TRIM';
|
|
ElevateDB_reservedwords[301] := 'TRUE';
|
|
ElevateDB_reservedwords[302] := 'TRUNC';
|
|
ElevateDB_reservedwords[303] := 'TRUNCATE';
|
|
ElevateDB_reservedwords[304] := 'TYPE';
|
|
ElevateDB_reservedwords[305] := 'UCASE';
|
|
ElevateDB_reservedwords[306] := 'UNENCRYPTED';
|
|
ElevateDB_reservedwords[307] := 'UNION';
|
|
ElevateDB_reservedwords[308] := 'UNIQUE';
|
|
ElevateDB_reservedwords[309] := 'UNPREPARE';
|
|
ElevateDB_reservedwords[310] := 'UNTIL';
|
|
ElevateDB_reservedwords[311] := 'UPDATE';
|
|
ElevateDB_reservedwords[312] := 'UPPER';
|
|
ElevateDB_reservedwords[313] := 'USE';
|
|
ElevateDB_reservedwords[314] := 'USER';
|
|
ElevateDB_reservedwords[315] := 'USING';
|
|
ElevateDB_reservedwords[316] := 'UTC';
|
|
ElevateDB_reservedwords[317] := 'VALUES';
|
|
ElevateDB_reservedwords[318] := 'VARBYTE';
|
|
ElevateDB_reservedwords[319] := 'VARCHAR';
|
|
ElevateDB_reservedwords[320] := 'VARYING';
|
|
ElevateDB_reservedwords[321] := 'VERSION';
|
|
ElevateDB_reservedwords[322] := 'VIEW';
|
|
ElevateDB_reservedwords[323] := 'WEEK';
|
|
ElevateDB_reservedwords[324] := 'WEEKLY';
|
|
ElevateDB_reservedwords[325] := 'WEEKS';
|
|
ElevateDB_reservedwords[326] := 'WHEN';
|
|
ElevateDB_reservedwords[327] := 'WHERE';
|
|
ElevateDB_reservedwords[328] := 'WHILE';
|
|
ElevateDB_reservedwords[329] := 'WINDOWS';
|
|
ElevateDB_reservedwords[330] := 'WITH';
|
|
ElevateDB_reservedwords[331] := 'WITHOUT';
|
|
ElevateDB_reservedwords[332] := 'WORD';
|
|
ElevateDB_reservedwords[333] := 'WORK';
|
|
ElevateDB_reservedwords[334] := 'YEAR';
|
|
end;
|
|
|
|
function TDAElevateDBConnection.IdentifierNeedsQuoting(
|
|
const iIdentifier: string): boolean;
|
|
begin
|
|
Result:=inherited IdentifierNeedsQuoting(iIdentifier) or ElevateDB_IdentifierNeedsQuoting(iIdentifier);
|
|
end;
|
|
|
|
initialization
|
|
ElevateDB_InitializeReservedWords;
|
|
finalization
|
|
ElevateDB_reservedwords := nil;
|
|
end.
|
|
|