mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-06 05:18:00 +02:00
2244 lines
112 KiB
ObjectPascal
2244 lines
112 KiB
ObjectPascal
{-------------------------------------------------------------------------------
|
|
The contents of this file are subject to the Mozilla Public License
|
|
Version 1.1 (the "License"); you may not use this file except in compliance
|
|
with the License. You may obtain a copy of the License at
|
|
http://www.mozilla.org/MPL/
|
|
|
|
Software distributed under the License is distributed on an "AS IS" basis,
|
|
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
|
|
the specific language governing rights and limitations under the License.
|
|
|
|
The Original Code is: SynHighlighterSQL.pas, released 2000-04-21.
|
|
The Original Code is based on the wmSQLSyn.pas and wmSybaseSyn.pas files from
|
|
the mwEdit component suite by Martin Waldenburg and other developers, the
|
|
Initial Author of these files is Willo van der Merwe. Initial Author of
|
|
SynHighlighterSQL.pas is Michael Hieke.
|
|
Portions created by Willo van der Merwe are Copyright 1999 Willo van der Merwe.
|
|
Portions created by Michael Hieke are Copyright 2000 Michael Hieke.
|
|
All Rights Reserved.
|
|
|
|
Contributors to the SynEdit and mwEdit projects are listed in the
|
|
Contributors.txt file.
|
|
|
|
Alternatively, the contents of this file may be used under the terms of the
|
|
GNU General Public License Version 2 or later (the "GPL"), in which case
|
|
the provisions of the GPL are applicable instead of those above.
|
|
If you wish to allow use of your version of this file only under the terms
|
|
of the GPL and not to allow others to use your version of this file
|
|
under the MPL, indicate your decision by deleting the provisions above and
|
|
replace them with the notice and other provisions required by the GPL.
|
|
If you do not delete the provisions above, a recipient may use your version
|
|
of this file under either the MPL or the GPL.
|
|
|
|
$Id$
|
|
|
|
You may retrieve the latest version of this file at the SynEdit home page,
|
|
located at http://SynEdit.SourceForge.net
|
|
|
|
Known Issues:
|
|
-------------------------------------------------------------------------------}
|
|
{
|
|
@abstract(SQL highlighter for SynEdit with support for different dialects.)
|
|
@author(Michael Hieke)
|
|
@created(2000-04-21)
|
|
@lastmod(2000-11-16)
|
|
The SynHighlighterSQL implements a highlighter for SQL for the SynEdit projects.
|
|
Different SQL dialects can be selected via the Dialect property.
|
|
}
|
|
unit SynHighlighterSQL;
|
|
|
|
{$I SynEdit.inc}
|
|
|
|
interface
|
|
|
|
uses
|
|
SysUtils, Classes,
|
|
LCLIntf, LCLType,
|
|
Controls, Graphics,
|
|
SynEditTypes, SynEditHighlighter, SynEditStrConst,
|
|
SynHighlighterHashEntries;
|
|
|
|
type
|
|
TtkTokenKind = (tkComment, tkDatatype, tkDefaultPackage, tkException, // DJLP 2000-08-11
|
|
tkFunction, tkIdentifier, tkKey, tkNull, tkNumber, tkSpace, tkPLSQL, // DJLP 2000-08-11
|
|
tkSQLPlus, tkString, tkSymbol, tkTableName, tkUnknown, tkVariable); // DJLP 2000-08-11
|
|
|
|
TRangeState = (rsUnknown, rsComment, rsString);
|
|
|
|
TProcTableProc = procedure of object;
|
|
|
|
TSQLDialect = (sqlStandard, sqlInterbase6, sqlMSSQL7, sqlMySQL, sqlOracle,
|
|
sqlSybase, sqlIngres, sqlMSSQL2K, sqlPostgres, sqlSQLite, // JJV 2000-11-16
|
|
sqlFirebird25, sqlFirebird30, sqlFirebird40, sqlMSSQL2022);
|
|
|
|
type
|
|
PIdentifierTable = ^TIdentifierTable;
|
|
TIdentifierTable = array[Char] of ByteBool;
|
|
|
|
PHashTable = ^THashTable;
|
|
THashTable = array[Char] of Integer;
|
|
|
|
type
|
|
TSynSQLSyn = class(TSynCustomHighlighter)
|
|
private
|
|
fRange: TRangeState;
|
|
fLine: PChar;
|
|
fLineNumber: Integer;
|
|
fProcTable: array[#0..#255] of TProcTableProc;
|
|
Run: LongInt;
|
|
fStringLen: Integer;
|
|
fToIdent: PChar;
|
|
fTokenPos: Integer;
|
|
fTokenID: TtkTokenKind;
|
|
fKeywords: TSynHashEntryList;
|
|
fTableNames: TStrings;
|
|
fDialect: TSQLDialect;
|
|
fCommentAttri: TSynHighlighterAttributes;
|
|
fDataTypeAttri: TSynHighlighterAttributes;
|
|
fDefaultPackageAttri: TSynHighlighterAttributes; // DJLP 2000-08-11
|
|
fExceptionAttri: TSynHighlighterAttributes;
|
|
fFunctionAttri: TSynHighlighterAttributes;
|
|
fIdentifierAttri: TSynHighlighterAttributes;
|
|
fKeyAttri: TSynHighlighterAttributes;
|
|
fNumberAttri: TSynHighlighterAttributes;
|
|
fPLSQLAttri: TSynHighlighterAttributes; // DJLP 2000-08-11
|
|
fSpaceAttri: TSynHighlighterAttributes;
|
|
fSQLPlusAttri: TSynHighlighterAttributes; // DJLP 2000-09-05
|
|
fStringAttri: TSynHighlighterAttributes;
|
|
fSymbolAttri: TSynHighlighterAttributes;
|
|
fTableNameAttri: TSynHighlighterAttributes;
|
|
fVariableAttri: TSynHighlighterAttributes;
|
|
fIdentifiersPtr: PIdentifierTable;
|
|
fmHashTablePtr: PHashTable;
|
|
function KeyHash(ToHash: PChar): Integer;
|
|
function KeyComp(const aKey: string): Boolean;
|
|
procedure AndSymbolProc;
|
|
procedure AsciiCharProc;
|
|
procedure CRProc;
|
|
procedure EqualProc;
|
|
procedure GreaterProc;
|
|
procedure IdentProc;
|
|
procedure LFProc;
|
|
procedure LowerProc;
|
|
procedure MinusProc;
|
|
procedure NullProc;
|
|
procedure NumberProc;
|
|
procedure OrSymbolProc;
|
|
procedure PlusProc;
|
|
procedure SlashProc;
|
|
procedure SpaceProc;
|
|
procedure StringProc;
|
|
procedure SymbolProc;
|
|
procedure SymbolAssignProc;
|
|
procedure VariableProc;
|
|
procedure UnknownProc;
|
|
function IdentKind(MayBe: PChar): TtkTokenKind;
|
|
procedure MakeMethodTables;
|
|
procedure AnsiCProc;
|
|
procedure DoAddKeyword(AKeyword: string; AKind: integer);
|
|
procedure SetDialect(Value: TSQLDialect);
|
|
procedure SetTableNames(const Value: TStrings);
|
|
procedure TableNamesChanged(Sender: TObject);
|
|
procedure InitializeKeywordLists;
|
|
procedure PutTableNamesInKeywordList;
|
|
protected
|
|
function GetIdentChars: TSynIdentChars; override;
|
|
function GetSampleSource : String; override;
|
|
public
|
|
class function GetLanguageName: string; override;
|
|
public
|
|
constructor Create(AOwner: TComponent); override;
|
|
destructor Destroy; override;
|
|
procedure Assign(Source: TPersistent); override;
|
|
function GetDefaultAttribute(Index: integer): TSynHighlighterAttributes;
|
|
override;
|
|
function GetEol: Boolean; override;
|
|
function GetRange: Pointer; override;
|
|
function GetToken: string; override;
|
|
procedure GetTokenEx(out TokenStart: PChar; out TokenLength: integer); override;
|
|
|
|
function GetTokenAttribute: TSynHighlighterAttributes; override;
|
|
function GetTokenID: TtkTokenKind;
|
|
function GetTokenKind: integer; override;
|
|
function GetTokenPos: Integer; override;
|
|
function IsKeyword(const AKeyword: string): boolean; override; // DJLP 2000-08-09
|
|
procedure Next; override;
|
|
procedure ResetRange; override;
|
|
procedure SetLine(const NewValue: string; LineNumber: Integer); override;
|
|
procedure SetRange(Value: Pointer); override;
|
|
published
|
|
property CommentAttri: TSynHighlighterAttributes read fCommentAttri
|
|
write fCommentAttri;
|
|
property DataTypeAttri: TSynHighlighterAttributes read fDataTypeAttri
|
|
write fDataTypeAttri;
|
|
property DefaultPackageAttri: TSynHighlighterAttributes // DJLP 2000-08-11
|
|
read fDefaultPackageAttri write fDefaultPackageAttri;
|
|
property ExceptionAttri: TSynHighlighterAttributes read fExceptionAttri
|
|
write fExceptionAttri;
|
|
property FunctionAttri: TSynHighlighterAttributes read fFunctionAttri
|
|
write fFunctionAttri;
|
|
property IdentifierAttri: TSynHighlighterAttributes read fIdentifierAttri
|
|
write fIdentifierAttri;
|
|
property KeyAttri: TSynHighlighterAttributes read fKeyAttri write fKeyAttri;
|
|
property NumberAttri: TSynHighlighterAttributes read fNumberAttri
|
|
write fNumberAttri;
|
|
property PLSQLAttri: TSynHighlighterAttributes read fPLSQLAttri // DJLP 2000-08-11
|
|
write fPLSQLAttri;
|
|
property SpaceAttri: TSynHighlighterAttributes read fSpaceAttri
|
|
write fSpaceAttri;
|
|
property SQLPlusAttri: TSynHighlighterAttributes read fSQLPlusAttri // DJLP 2000-09-05
|
|
write fSQLPlusAttri;
|
|
property StringAttri: TSynHighlighterAttributes read fStringAttri
|
|
write fStringAttri;
|
|
property SymbolAttri: TSynHighlighterAttributes read fSymbolAttri
|
|
write fSymbolAttri;
|
|
property TableNameAttri: TSynHighlighterAttributes read fTableNameAttri
|
|
write fTableNameAttri;
|
|
property TableNames: TStrings read fTableNames write SetTableNames;
|
|
property VariableAttri: TSynHighlighterAttributes read fVariableAttri
|
|
write fVariableAttri;
|
|
property SQLDialect: TSQLDialect read fDialect write SetDialect;
|
|
end;
|
|
|
|
implementation
|
|
|
|
var
|
|
Identifiers: TIdentifierTable;
|
|
mHashTable: THashTable;
|
|
|
|
IdentifiersMSSQL7: TIdentifierTable;
|
|
mHashTableMSSQL7: THashTable;
|
|
|
|
const
|
|
//---SQLite keywords------------------------------------------------------------
|
|
SQLiteKW: string =
|
|
'abort,action,add,after,all,alter,analyze,and,as,asc,attach,autoincrement,' +
|
|
'before,begin,between,by,cascade,case,cast,check,collate,column,' +
|
|
'commit,conflict,constraint,create,cross,current_date,current_time,' +
|
|
'current_timestamp,database,default,deferrable,deferred,delete,desc,' +
|
|
'detach,distinct,drop,each,else,end,escape,except,exclusive,exists,explain,' +
|
|
'fail,for,foreign,from,full,glob,group,having,if,ignore,immediate,in,index,indexed,' +
|
|
'initially,inner,insert,instead,intersect,into,is,isnull,join,key,left,like,limit,' +
|
|
'match,natural,no,not,notnull,null,of,offset,on,or,order,outer,plan,pragma,' +
|
|
'primary,query,replace,raise,references,regexp,reindex,release,rename,restrict,right,' +
|
|
'rollback,row,savepoint,select,set,table,temp,temporary,then,to,transaction,' +
|
|
'trigger,union,unique,update,using,vacuum,values,view,virtual,when,where';
|
|
|
|
SQLiteTypes: string =
|
|
'int,integer,tinyint,smallint,mediumint,bigint,int2,int8,character,varchar,' +
|
|
'nchar,,nvarchar,text,clob,blob,real,double,float,numeric,decimal,boolean,' +
|
|
'date,datetime';
|
|
|
|
SQLiteFunctions: string =
|
|
'abs,avg,changes,char,coalesce,concat,concat_ws,count,format,group_concat,' +
|
|
'hex,ifnull,iif,instr,julianday,last_insert_rowid,json,json_array,' +
|
|
'json_array_length,json_each,json_error_position,json_extract,json_group_array,' +
|
|
'json_group_object,json_insert,json_object,json_patch,json_quote,json_remove,' +
|
|
'json_replace,json_set,json_tree,json_type,json_valid,jsonb,jsonb_array,' +
|
|
'jsonb_insert,jsonb_extract,jsonb_group_array,jsonb_group_object,jsonb_object,' +
|
|
'jsonb_patch,jsonb_remove,jsonb_replace,jsonb_set,length,likelihood,likely,' +
|
|
'load_extension,lower,ltrim,max,min,nullif,octet_length,printf,quote,random,' +
|
|
'randomblob,round,rtrim,sign,soundex,sqlite_compileoption_get,' +
|
|
'sqlite_compileoption_used,sqlite_offset,sqlite_source_id,sqlite_version,' +
|
|
'strftim,substr,substring,sum,time,total,total_changes,trim,typeof,unhex,' +
|
|
'unicode,unlikely,upper,zeroblob';
|
|
|
|
//---"Standard" (ANSI SQL keywords (Version 1, 2 and 3) (www.sql.org)---------
|
|
StandardKW: string =
|
|
'absolute,action,active,actor,add,after,alias,all,allocate,alter,' +
|
|
'and,any,are,as,asc,ascending,assertion,async,at,attributes,auto,' +
|
|
'base_name,before,begin,between,bit,bit_length,boolean,both,breadth,by,' +
|
|
'cache,call,cascade,cascaded,case,cast,catalog,char_length,' +
|
|
'character_length,check,coalesce,collate,collation,column,commit,' +
|
|
'committed,completion,computed,conditional,connect,connection,constraint,' +
|
|
'constraints,containing,convert,corresponding,count,create,cross,current,' +
|
|
'current_date,current_path,current_time,current_timestamp,current_user,' +
|
|
'cursor,cycle,data,database,date,day,deallocate,debug,declare,default,' +
|
|
'deferrable,deferred,delete,depth,desc,descending,describe,descriptor,' +
|
|
'destroy,diagnostics,dictionary,disconnect,distinct,do,domain,' +
|
|
'drop,each,element,else,elseif,end,end-exec,entry_point,equals,escape,' +
|
|
'except,exception,execute,exists,exit,external,extract,factor,false,' +
|
|
'filter,first,for,foreign,from,full,function,general,generator,get,' +
|
|
'global,grant,group,having,hold,hour,identity,if,ignore,immediate,in,' +
|
|
'inactive,index,initially,inner,input,insensitive,insert,instead,' +
|
|
'intersect,interval,into,is,isolation,join,key,last,leading,leave,left,' +
|
|
'less,level,like,limit,list,local,loop,lower,match,merge,minute,modify,' +
|
|
'month,names,national,natural,nchar,new,new_table,next,no,none,not,null,' +
|
|
'nullif,object,octet_length,of,off,old,old_table,on,only,operation,' +
|
|
'operator,operators,or,order,others,outer,output,overlaps,pad,' +
|
|
'parameter,parameters,partial,password,path,pendant,plan,position,' +
|
|
'postfix,prefix,preorder,prepare,preserve,primary,prior,private,' +
|
|
'privileges,procedure,protected,read,recursive,ref,referencing,relative,' +
|
|
'replace,resignal,restrict,retain,return,returns,revoke,right,role,' +
|
|
'rollback,routine,row,rows,savepoint,schema,scroll,search,second,select,' +
|
|
'sensitive,sequence,session,session_user,set,shadow,shared,signal,' +
|
|
'similar,size,snapshot,some,space,sqlexception,sqlstate,sqlwarning,start,' +
|
|
'state,structure,substring,suspend,symbol,system_user,table,temporary,' +
|
|
'term,test,then,there,time,timestamp,timezone_hour,timezone_minute,to,' +
|
|
'trailing,transaction,translate,translation,trigger,trim,true,tuple,type,' +
|
|
'uncommitted,under,union,unique,unknown,update,upper,usage,user,using,' +
|
|
'value,varchar,variable,varying,view,virtual,visible,wait,when,where,' +
|
|
'while,with,without,work,write,year,zone';
|
|
|
|
//---Sybase keywords------------------------------------------------------------
|
|
SybaseKW: string =
|
|
'absolute,action,add,after,alias,all,allocate,alter,and,any,are,' +
|
|
'arith_overflow,as,asc,assertion,async,at,authorization,avg,before,begin,' +
|
|
'between,bit,bit_length,boolean,both,breadth,break,browse,bulk,by,call,' +
|
|
'cascade,cascaded,case,cast,catalog,char,char_convert,char_length,' +
|
|
'character,character_length,check,checkpoint,close,clustered,coalesce,' +
|
|
'collate,collation,column,commit,completion,compute,confirm,' +
|
|
'connect,connection,constraint,constraints,continue,controlrow,convert,' +
|
|
'corresponding,count,create,cross,current,current_date,current_time,' +
|
|
'current_timestamp,current_user,cursor,cycle,data,database,date,day,dbcc,' +
|
|
'deallocate,dec,decimal,declare,default,deferrable,deferred,delete,depth,' +
|
|
'desc,describe,descriptor,diagnostics,dictionary,dis,disconnect,distinct,' +
|
|
'domain,double,drop,dummy,dump,each,else,elseif,en,end,endtran,equals,' +
|
|
'errlvl,errordata,errorexit,escape,except,exception,exclusive,exec,' +
|
|
'execute,exists,exit,exp_row_size,external,extract,false,fetch,' +
|
|
'fillfactor,first,float,for,foreign,found,from,full,general,get,global,' +
|
|
'go,goto,grant,group,having,holdlock,hour,identity,identity_gap,' +
|
|
'identity_insert,identity_start,if,ignore,immediate,in,index,indicator,' +
|
|
'initially,inner,input,insensitive,insert,install,int,integer,intersect,' +
|
|
'interval,into,is,isolation,jar,join,key,kill,language,last,leading,' +
|
|
'leave,left,less,level,like,limit,lineno,load,local,lock,loop,lower,' +
|
|
'match,max,max_rows_per_page,min,minute,mirror,mirrorexit,modify,module,' +
|
|
'month,names,national,natural,nchar,new,next,no,noholdlock,nonclustered,' +
|
|
'none,not,null,nullif,numeric,numeric_truncation,object,' +
|
|
'octet_length,of,off,offsets,oid,old,on,once,online,only,open,operation,' +
|
|
'operators,option,or,order,others,outer,output,over,overlaps,pad,' +
|
|
'parameters,partial,partition,pendant,perm,permanent,plan,position,' +
|
|
'precision,preorder,prepare,preserve,primary,print,prior,private,' +
|
|
'privileges,proc,procedure,processexit,protected,proxy_table,public,' +
|
|
'quiesce,raiserror,read,readpast,readtext,real,reconfigure,recursive,' +
|
|
'ref,reference,referencing,relative,remove,reorg,replace,replication,' +
|
|
'reservepagegap,resignal,restrict,return,returns,revoke,right,role,' +
|
|
'rollback,routine,row,rowcount,rows,rule,save,savepoint,schema,scroll,' +
|
|
'search,second,section,select,sensitive,sequence,session_user,set,' +
|
|
'setuser,shared,shutdown,signal,similar,size,smallint,some,space,sql,' +
|
|
'sqlcode,sqlerror,sqlexception,sqlstate,statistics,stripe,structure,' +
|
|
'substring,sum,syb_identity,syb_restree,system_user,table,temp,temporary,' +
|
|
'test,textsize,then,there,time,timestamp,timezone_hour,timezone_minute,' +
|
|
'to,trailing,tran,transaction,translate,translation,trigger,trim,true,' +
|
|
'truncate,tsequal,type,under,union,unique,unknown,unpartition,update,' +
|
|
'upper,usage,use,user,user_option,using,value,values,varchar,variable,' +
|
|
'varying,view,virtual,visible,wait,waitfor,when,whenever,where,while,' +
|
|
'with,without,work,write,writetext,year,zone';
|
|
|
|
//---Oracle---------------------------------------------------------------------
|
|
// Oracle SQL keywords
|
|
OracleKW: string =
|
|
'ACCESS,ACCESSED,ACCOUNT,ACTIVATE,ACTIVE_INSTANCE_COUNT,ADD,ADMIN,ADVISE,' +
|
|
'AGENT,ALL,ALLOCATE,ALTER,ANALYZE,ANCILLARY,AND,ANY,AQ_TM_PROCESSES,' +
|
|
'ARCHIVE_LAG_TARGET,ARCHIVELOG,AS,ASC,ASSOCIATE,ATTRIBUTES,AUDIT,' +
|
|
'AUDIT_FILE_DEST,AUDIT_SYS_OPERATIONS,AUDIT_TRAIL,AUTHENTICATED,AUTHID,' +
|
|
'AUTOALLOCATE,AUTOEXTEND,AUTOMATIC,BACKGROUND_CORE_DUMP,' +
|
|
'BACKGROUND_DUMP_DEST,BACKUP,BACKUP_TAPE_IO_SLAVES,BECOME,BEFORE,' +
|
|
'BEHALF,BETWEEN,BINDING,BITMAP,BITMAP_MERGE_AREA_SIZE,BLANK_TRIMMING,' +
|
|
'BLOCK,BLOCKSIZE,BUFFER_POOL,BUFFER_POOL_KEEP,BUFFER_POOL_RECYCLE,BY,' +
|
|
'CACHE,CANCEL,CASCADE,CAST,CATEGORY,CHAINED,CHANGE,CHARACTER,CHECK,' +
|
|
'CHECKPOINT,CHILD,CHUNK,CIRCUITS,CLASS,CLONE,CLUSTER,CLUSTER_DATABASE,' +
|
|
'CLUSTER_DATABASE_INSTANCES,CLUSTER_INTERCONNECTS,COALESCE,COBOL,' +
|
|
'COLUMN,COLUMNS,COMMENT,COMMIT_POINT_STRENGTH,COMPATIBLE,COMPILE,' +
|
|
'COMPLETE,COMPOSITE_LIMIT,COMPRESS,COMPUTE,CONNECT,' +
|
|
'CONNECT_TIME,CONSIDER,CONSTRAINT,CONSTRAINTS,CONTENTS,CONTEXT,CONTINUE,' +
|
|
'CONTROL,CONTROL_FILE_RECORD_KEEP_TIME,CONTROL_FILES,CONTROLFILE,' +
|
|
'CORE_DUMP_DEST,COST,CPU_COUNT,CPU_PER_CALL,CPU_PER_SESSION,CREATE,' +
|
|
'CREATE_BITMAP_AREA_SIZE,CREATE_STORED_OUTLINES,CURRENT,CURRENT_USER,' +
|
|
'CURSOR_SHARING,CURSOR_SPACE_FOR_TIME,CYCLE,DANGLING,DATAFILE,' +
|
|
'DB_BLOCK_BUFFERS,DB_BLOCK_CHECKING,DB_BLOCK_CHECKSUM,DB_BLOCK_SIZE,' +
|
|
'DB_CACHE_ADVICE,DB_CACHE_SIZE,DB_CREATE_FILE_DEST,DB_DOMAIN,' +
|
|
'DB_FILE_MULTIBLOCK_READ_COUNT,DB_FILE_NAME_CONVERT,DB_FILES,' +
|
|
'DB_KEEP_CACHE_SIZE,DB_NAME,DB_RECYCLE_CACHE_SIZE,DB_WRITER_PROCESSES,' +
|
|
'DBLINK_ENCRYPT_LOGIN,DBWR_IO_SLAVES,DEALLOCATE,DEBUG,DEFAULT,DEFERRED,' +
|
|
'DEFINER,DELETE,DEMAND,DETERMINES,DG_BROKER_START,DICTIONARY,DIMENSION,' +
|
|
'DIRECTORY,DISABLE,DISASSOCIATE,DISK_ASYNCH_IO,DISMOUNT,DISPATCHERS,' +
|
|
'DISTINCT,DISTRIBUTED,DISTRIBUTED_LOCK_TIMEOUT,DML,DML_LOCKS,DOCUMENT,' +
|
|
'DROP,DRS_START,ELSE,ENABLE,ENQUEUE_RESOURCES,ESCAPE,ESTIMATE,EVENT,' +
|
|
'EVENTS,EXCEPT,EXCEPTIONS,EXCHANGE,EXCLUDING,EXCLUSIVE,EXISTS,EXPIRE,' +
|
|
'EXPLAIN,EXTENT,EXTERNALLY,FAILED_LOGIN_ATTEMPTS,FAL_CLIENT,FAL_SERVER,' +
|
|
'FAST,FAST_START_IO_TARGET,FAST_START_MTTR_TARGET,' +
|
|
'FAST_START_PARALLEL_ROLLBACK,FILE,FILE_MAPPING,FILESYSTEMIO_OPTIONS,' +
|
|
'FIXED_DATE,FLUSH,FOR,FORCE,FOREIGN,FORTRAN,FREELIST,FREELISTS,FRESH,' +
|
|
'FROM,FROM_TZ,FUNCTIONS,GC_FILES_TO_LOCKS,GENERATED,GLOBAL,' +
|
|
'GLOBAL_CONTEXT_POOL_SIZE,GLOBAL_NAME,GLOBAL_NAMES,GLOBALLY,GO,GRANT,' +
|
|
'GROUP,GROUPS,HASH,HASH_AREA_SIZE,HASH_JOIN_ENABLED,HASHKEYS,HAVING,HEAP,' +
|
|
'HI_SHARED_MEMORY_ADDRESS,HIERARCHY,HS_AUTOREGISTER,IDENTIFIED,IDLE_TIME,' +
|
|
'IFILE,IMMEDIATE,IN,INCLUDING,INCREMENT,INDEX,INDEXTYPE,INDEXTYPES,' +
|
|
'INFILE,INITIAL,INITIALIZED,INITIALLY,INITRANS,INSERT,INSTANCE,' +
|
|
'INSTANCE_GROUPS,INSTANCE_NAME,INSTANCE_NUMBER,INT,INTERSECT,INTO,' +
|
|
'INVALIDATE,IS,ISOLATION,JAVA,JAVA_MAX_SESSIONSPACE_SIZE,JAVA_POOL_SIZE,' +
|
|
'JAVA_SOFT_SESSIONSPACE_LIMIT,JOB_QUEUE_PROCESSES,JOIN,KEEP,KEY,KILL,' +
|
|
'LARGE_POOL_SIZE,LAYERLISTS,LEVEL,LIBRARY,LICENSE_MAX_SESSIONS,' +
|
|
'LICENSE_MAX_USERS,LICENSE_SESSIONS_WARNING,LIKE,LIMIT,LINK,LIST,LOB,' +
|
|
'LOCAL,LOCAL_LISTENER,LOCATOR,LOCK,LOCK_NAME_SPACE,LOCK_SGA,' +
|
|
'LOG_ARCHIVE_DEST,LOG_ARCHIVE_DUPLEX_DEST,LOG_ARCHIVE_FORMAT,' +
|
|
'LOG_ARCHIVE_MAX_PROCESSES,LOG_ARCHIVE_MIN_SUCCEED_DEST,' +
|
|
'LOG_ARCHIVE_START,LOG_ARCHIVE_TRACE,LOG_BUFFER,LOG_CHECKPOINT_INTERVAL,' +
|
|
'LOG_CHECKPOINT_TIMEOUT,LOG_CHECKPOINTS_TO_ALERT,LOG_FILE_NAME_CONVERT,' +
|
|
'LOG_PARALLELISM,LOGFILE,LOGGING,LOGICAL_READS_PER_CALL,' +
|
|
'LOGICAL_READS_PER_SESSION,LOGMNR_MAX_PERSISTENT_SESSIONS,MANAGE,MANAGED,' +
|
|
'MANUAL,MAP,MASTER,MATCHED,MATERIALIZED,MAX_COMMIT_PROPAGATION_DELAY,' +
|
|
'MAX_DISPATCHERS,MAX_DUMP_FILE_SIZE,MAX_ENABLED_ROLES,' +
|
|
'MAX_ROLLBACK_SEGMENTS,MAX_SHARED_SERVERS,MAXDATAFILES,MAXEXTENTS,' +
|
|
'MAXINSTANCES,MAXLOGFILES,MAXLOGHISTORY,MAXLOGMEMBERS,MAXSIZE,MAXTRANS,' +
|
|
'MAXVALUE,MEMBER,MINEXTENTS,MINIMIZE,MINIMUM,MINUS,MINVALUE,MODE,MODIFY,' +
|
|
'MODULE,MONITORING,MOUNT,MOVE,MOVEMENT,MULTISET,NAMED,NATIONAL,NESTED,' +
|
|
'NEVER,NEXT,NLS_CALENDAR,NLS_COMP,NLS_CURRENCY,NLS_DATE_FORMAT,' +
|
|
'NLS_DATE_LANGUAGE,NLS_DUAL_CURRENCY,NLS_ISO_CURRENCY,NLS_LANGUAGE,' +
|
|
'NLS_LENGTH_SEMANTICS,NLS_NCHAR_CONV_EXCP,NLS_NUMERIC_CHARACTERS,' +
|
|
'NLS_TERRITORY,NLS_TIMESTAMP_FORMAT,NLS_TIMESTAMP_TZ_FORMAT,NO,' +
|
|
'NOARCHIVELOG,NOAUDIT,NOCACHE,NOCOMPRESS,NOCOPY,NOCYCLE,NOFORCE,' +
|
|
'NOLOGGING,NOMAXVALUE,NOMINIMIZE,NOMINVALUE,NOMONITORING,NONE,' +
|
|
'NOORDER,NORELY,NORESETLOGS,NOREVERSE,NORMAL,NOROWDEPENDENCIES,NOSORT,' +
|
|
'NOT,NOTHING,NOVALIDATE,NOWAIT,NULL,O7_DICTIONARY_ACCESSIBILITY,' +
|
|
'OBJECT_CACHE_MAX_SIZE_PERCENT,OBJECT_CACHE_OPTIMAL_SIZE,OF,OFFLINE,OID,' +
|
|
'OLAP_PAGE_POOL_SIZE,ON,ONLINE,ONLY,OPEN_CURSORS,OPEN_LINKS,' +
|
|
'OPEN_LINKS_PER_INSTANCE,OPERATOR,OPTIMAL,OPTIMIZER_DYNAMIC_SAMPLING,' +
|
|
'OPTIMIZER_FEATURES_ENABLE,OPTIMIZER_INDEX_CACHING,' +
|
|
'OPTIMIZER_INDEX_COST_ADJ,OPTIMIZER_MAX_PERMUTATIONS,OPTIMIZER_MODE,' +
|
|
'OPTION,OR,ORACLE_TRACE_COLLECTION_NAME,ORACLE_TRACE_COLLECTION_PATH,' +
|
|
'ORACLE_TRACE_COLLECTION_SIZE,ORACLE_TRACE_ENABLE,' +
|
|
'ORACLE_TRACE_FACILITY_NAME,ORACLE_TRACE_FACILITY_PATH,ORDER,' +
|
|
'OS_AUTHENT_PREFIX,OS_ROLES,OUTLINE,OVERFLOW,OWN,PACKAGES,PARALLEL,' +
|
|
'PARALLEL_ADAPTIVE_MULTI_USER,PARALLEL_AUTOMATIC_TUNING,' +
|
|
'PARALLEL_EXECUTION_MESSAGE_SIZE,PARALLEL_INSTANCE_GROUP,' +
|
|
'PARALLEL_MAX_SERVERS,PARALLEL_MIN_PERCENT,PARALLEL_MIN_SERVERS,' +
|
|
'PARALLEL_THREADS_PER_CPU,PARAMETERS,PARTITION_VIEW_ENABLED,PARTITIONS,' +
|
|
'PASSWORD,PASSWORD_GRACE_TIME,PASSWORD_LIFE_TIME,PASSWORD_LOCK_TIME,' +
|
|
'PASSWORD_REUSE_MAX,PASSWORD_REUSE_TIME,PASSWORD_VERIFY_FUNCTION,' +
|
|
'PCTFREE,PCTINCREASE,PCTTHRESHOLD,PCTUSED,PCTVERSION,PERCENT,PERMANENT,' +
|
|
'PGA_AGGREGATE_TARGET,PIPELINED,PLAN,PLI,PLSQL_COMPILER_FLAGS,' +
|
|
'PLSQL_NATIVE_C_COMPILER,PLSQL_NATIVE_LIBRARY_DIR,' +
|
|
'PLSQL_NATIVE_LIBRARY_SUBDIR_COUNT,PLSQL_NATIVE_LINKER,' +
|
|
'PLSQL_NATIVE_MAKE_FILE_NAME,PLSQL_NATIVE_MAKE_UTILITY,' +
|
|
'PLSQL_V2_COMPATIBILITY,POST_TRANSACTION,PRE_PAGE_SGA,PREBUILD,PRECISION,' +
|
|
'PRIMARY,PRIOR,PRIVATE_SGA,PRIVILEGES,PROCESSES,PROFILE,PUBLIC,QUERY,' +
|
|
'QUERY_REWRITE_ENABLED,QUERY_REWRITE_INTEGRITY,QUIESCE,QUOTA,' +
|
|
'RDBMS_SERVER_DN,READ,READ_ONLY_OPEN_DELAYED,REBUILD,RECORDS_PER_BLOCK,' +
|
|
'RECOVER,RECOVERABLE,RECOVERY,RECOVERY_PARALLELISM,RECYCLE,REDUCED,' +
|
|
'REFERENCES,REFRESH,REGISTER,RELY,REMOTE_ARCHIVE_ENABLE,' +
|
|
'REMOTE_DEPENDENCIES_MODE,REMOTE_LISTENER,REMOTE_LOGIN_PASSWORDFILE,' +
|
|
'REMOTE_OS_AUTHENT,REMOTE_OS_ROLES,RENAME,' +
|
|
'REPLICATION_DEPENDENCY_TRACKING,RESET,RESETLOGS,RESIZE,RESOLVE,RESOLVER,' +
|
|
'RESOURCE,RESOURCE_LIMIT,RESOURCE_MANAGER_PLAN,RESTRICT,RESTRICTED,' +
|
|
'RESUMABLE,RESUME,REUSE,REVOKE,REWRITE,RNDS,RNPS,ROLE,ROLES,' +
|
|
'ROLLBACK_SEGMENTS,ROW,ROW_LOCKING,ROWDEPENDENCIES,ROWLABEL,ROWNUM,' +
|
|
'ROWS,SAMPLE,SCN,SCOPE,SECTION,SEGMENT,SELECT,SELECTIVITY,SEQUENCE,' +
|
|
'SERIAL_REUSE,SERVICE_NAMES,SESSION,SESSION_CACHED_CURSORS,' +
|
|
'SESSION_MAX_OPEN_FILES,SESSIONS,SESSIONS_PER_USER,SGA_MAX_SIZE,' +
|
|
'SHADOW_CORE_DUMP,SHARE,SHARED,SHARED_MEMORY_ADDRESS,SHARED_POOL,' +
|
|
'SHARED_POOL_RESERVED_SIZE,SHARED_POOL_SIZE,SHARED_SERVER_SESSIONS,' +
|
|
'SHARED_SERVERS,SHRINK,SIZE,SNAPSHOT,SOME,SORT,SORT_AREA_RETAINED_SIZE,' +
|
|
'SORT_AREA_SIZE,SOURCE,SPECIFICATION,SPECIFIED,SPFILE,SPLIT,SQL_TRACE,' +
|
|
'SQL92_SECURITY,STANDBY,STANDBY_ARCHIVE_DEST,STANDBY_FILE_MANAGEMENT,' +
|
|
'STAR_TRANSFORMATION_ENABLED,START,START_DATE,STATISTICS,' +
|
|
'STATISTICS_LEVEL,STOP,STORAGE,STRUCTURE,SUBPARTITION,SUBPARTITIONS,' +
|
|
'SUCCESSFUL,SUSPEND,SWITCH,SYNONYM,SYSTEM,TABLE,TABLESPACE,' +
|
|
'TAPE_ASYNCH_IO,TEMPFILE,TEMPORARY,THE,THEN,THREAD,THROUGH,TIME,' +
|
|
'TIMED_OS_STATISTICS,TIMED_STATISTICS,TIMEOUT,TO,TRACE_ENABLED,' +
|
|
'TRACEFILE_IDENTIFIER,TRACING,TRANSACTION,TRANSACTION_AUDITING,' +
|
|
'TRANSACTIONS,TRANSACTIONS_PER_ROLLBACK_SEGMENT,TRIGGER,TRUNCATE,TRUST,' +
|
|
'TYPES,UNARCHIVED,UNDER,UNDO,UNDO_MANAGEMENT,UNDO_RETENTION,' +
|
|
'UNDO_SUPPRESS_ERRORS,UNDO_TABLESPACE,UNIFORM,UNION,UNIQUE,UNLIMITED,' +
|
|
'UNLOCK,UNQUIESCE,UNRECOVERABLE,UNTIL,UNUSABLE,UNUSED,UPDATE,USAGE,' +
|
|
'USE_INDIRECT_DATA_BUFFERS,USER_DUMP_DEST,VALIDATE,VALIDATION,VALUES,' +
|
|
'VARGRAPHIC,VARRAY,VIEW,WHERE,WITH,WITHOUT,WNDS,WNPS,' +
|
|
'WORKAREA_SIZE_POLICY';
|
|
|
|
// PLSQL keywords
|
|
OraclePLSQLKW: string =
|
|
'ABORT,ACCEPT,AFTER,ARRAY,ARRAYLEN,ASSERT,ASSIGN,AT,AUTHORIZATION,' +
|
|
'AUTONOMOUS_TRANSACTION,BASE_TABLE,BEGIN,BODY,BULK,BULK_ROWCOUNT,CALL,' +
|
|
'CALLING,CASE,CHAR_BASE,CHARSETFORM,CHARSETID,CLOSE,CLUSTERS,COLAUTH,' +
|
|
'COLLECT,COMMIT,CONNECTION,CONSTANT,COOKIE,COOKIE_TABLE,CRASH,CURRVAL,' +
|
|
'CURSOR,DATA_BASE,DATABASE,DBA,DEBUGOFF,DEBUGON,DECLARE,DEFINITION,' +
|
|
'DELAY,DELTA,DEQUEUE_OPTIONS_T,DETERMINISTIC,DIGITS,DISPOSE,DO,EACH,' +
|
|
'ELSIF,END,ENQUEUE_OPTIONS_T,ENTRY,EXCEPTION,EXCEPTION_INIT,EXIT,' +
|
|
'EXTERNAL,FALSE,FETCH,FIXED,FORALL,FORM,FOUND,FUNCTION,GENERIC,GOTO,IF,' +
|
|
'INDEXES,INDICATOR,INSTEAD,INTERFACE,ISOPEN,LANGUAGE,LCR$_DDL_RECORD,' +
|
|
'LCR$_ROW_LIST,LCR$_ROW_RECORD,LCR$_ROW_UNIT,LIMITED,LOOP,MAXLEN,' +
|
|
'MESSAGE_PROPERTIES_T,MGW_BASIC_MSG_T,MGW_MQSERIES_PROPERTIES,' +
|
|
'MGW_NAME_TYPE_ARRAY_T,MGW_NAME_VALUE_T,MGW_PROPERTIES,MGW_PROPERTY,' +
|
|
'MGW_RAW_VALUE_T,MGW_TEXT_VALUE_T,NAME,NEW,NEXTVAL,NOTFOUND,' +
|
|
'NUMBER_BASE,OLD,OPEN,OUT,PACKAGE,PARALLEL_ENABLE,PARTITION,PASCAL,' +
|
|
'PRAGMA,PRIVATE,PROCEDURE,RAISE,RANGE,RE$ATTRIBUTE_VALUE,' +
|
|
'RE$ATTRIBUTE_VALUE_LIST,RE$COLUMN_VALUE,RE$COLUMN_VALUE_LIST,' +
|
|
'RE$NAME_ARRAY,RE$NV_ARRAY,RE$NV_LIST,RE$NV_NODE,RE$RULE_HIT,' +
|
|
'RE$RULE_HIT_LIST,RE$TABLE_ALIAS,RE$TABLE_ALIAS_LIST,' +
|
|
'RE$TABLE_VALUE,RE$TABLE_VALUE_LIST,RE$VARIABLE_TYPE,' +
|
|
'RE$VARIABLE_TYPE_LIST,RE$VARIABLE_VALUE,RE$VARIABLE_VALUE_LIST,RECORD,' +
|
|
'REF,REFERENCING,RELEASE,REMR,REQ,RESP,RESTRICT_REFERENCES,RETURN,' +
|
|
'REVERSE,ROLLBACK,ROWCOUNT,ROWTYPE,RUNTIME_INFO,SAVEPOINT,SCHEMA,' +
|
|
'SELF,SEPARATE,SERIALLY_REUSABLE,SPACE,SQL,SQLERROR,STATEMENT,STRUCT,' +
|
|
'SUBTYPE,TABAUTH,TABLES,TASK,TDO,TERMINATE,TRUE,TYPE,USE,VARYING,VIEWS,' +
|
|
'WHEN,WHILE,WORK,WRITE,XOR';
|
|
|
|
// Oracle data types
|
|
OracleTypes: string =
|
|
'ANYDATA,ANYDATASET,ANYTYPE,BFILE,BINARY_INTEGER,BLOB,BOOLEAN,CHAR,CLOB,' +
|
|
'DATE,DAY,DBURIType,DEC,DECIMAL,DOUBLE,FLOAT,HTTPURIType,INTEGER,LONG,' +
|
|
'MLSLABEL,MONTH,NATURAL,NATURALN,NCHAR,NCLOB,NUMBER,NUMERIC,' +
|
|
'NVARCHAR2,PLS_INTEGER,POSITIVE,POSITIVEN,RAW,REAL,ROWID,SECOND,SMALLINT,' +
|
|
'TIMESTAMP,URIType,UROWID,VARCHAR,VARCHAR2,XDBURIType,XMLDATA,XMLType,' +
|
|
'YEAR,ZONE';
|
|
|
|
// Oracle built in exceptions
|
|
OracleExceptions: string =
|
|
'ACCESS_INTO_NULL,COLLECTION_IS_NULL,CURSOR_ALREADY_OPEN,' +
|
|
'DUP_VAL_ON_INDEX,INVALID_CURSOR,INVALID_NUMBER,LOGIN_DENIED,' +
|
|
'NO_DATA_FOUND,NOT_LOGGED_ON,OTHERS,PROGRAM_ERROR,ROWTYPE_MISMATCH,' +
|
|
'STORAGE_ERROR,SUBSCRIPT_BEYOND_COUNT,SUBSCRIPT_OUTSIDE_LIMIT,' +
|
|
'SYS_INVALID_ROWID,TIMEOUT_ON_RESOURCE,TOO_MANY_ROWS,VALUE_ERROR,' +
|
|
'ZERO_DIVIDE';
|
|
|
|
// Oracle built in functions
|
|
OracleFunctions: string =
|
|
'ABS,ACOS,ADD_MONTHS,AGGREGATE,ANALYTIC,ASCII,ASCIISTR,ASIN,ATAN,ATAN2,' +
|
|
'AVERAGE,AVG,BASE64_DECODE,BASE64_ENCODE,BEGIN_REQUEST,BFILENAME,' +
|
|
'BIN_TO_NUM,BIT_AND,BIT_COMPLEMENT,BIT_OR,BIT_XOR,BITAND,' +
|
|
'CAST_FROM_BINARY_INTEGER,CAST_FROM_NUMBER,CAST_TO_BINARY_INTEGER,' +
|
|
'CAST_TO_NUMBER,CAST_TO_RAW,CAST_TO_VARCHAR2,CEIL,CHARTOROWID,CHR,' +
|
|
'COLUMN_PRESENT,COMPARE,COMPARE_TEMPLATES,COMPOSE,CONCAT,CONVERSION,' +
|
|
'CONVERT,CONVERT_ANYDATA_TO_LCR_DDL,CONVERT_ANYDATA_TO_LCR_ROW,' +
|
|
'COPIES,COPY_TEMPLATE,CORR,COS,COSH,COUNT,COVAR_POP,COVAR_SAMP,' +
|
|
'CREATE_OBJECT_FROM_EXISTING,CREATE_PIPE,CREATE_REFRESH_TEMPLATE,' +
|
|
'CREATE_TEMPLATE_OBJECT,CREATE_TEMPLATE_PARM,CREATE_USER_AUTHORIZATION,' +
|
|
'CREATE_USER_PARM_VALUE,CRLF,CUBE,CUME_DIST,CURRENT_DATE,' +
|
|
'CURRENT_INSTANCE,CURRENT_TIMESTAMP,DATA_BLOCK_ADDRESS_BLOCK,' +
|
|
'DATA_BLOCK_ADDRESS_FILE,DBTIMEZONE,DECODE,DECOMPOSE,DELETE_BREAKPOINT,' +
|
|
'DELETE_OER_BREAKPOINT,DENSE_RANK,DEPTH,DEREF,DISABLE_BREAKPOINT,' +
|
|
'DISABLED,DISPLAY,DROP_ALL,DROP_ELEMENT,DROP_FILE,DUMP,' +
|
|
'EMPTY_BLOB,EMPTY_CLOB,ENABLE_BREAKPOINT,EQUALS_PATH,ESTIMATE_CPU_UNITS,' +
|
|
'EXCLUDE_PUSH,EXECUTE_AND_FETCH,EXECUTE_NON_QUERY,EXISTSNODE,EXP,EXTEND,' +
|
|
'EXTRACT,EXTRACTVALUE,FCOPY,FETCH_ROW,FETCH_ROWS,FGETPOS,FILEEXISTS,' +
|
|
'FILEISOPEN,FIRST,FIRST_VALUE,FLOOR,FLUSH_DATA,FOPEN,FOPEN_NCHAR,' +
|
|
'FORMAT_CALL_STACK,FORMAT_ERROR_STACK,FREMOVE,FRENAME,FROM_REMOTE,FSEEK,' +
|
|
'GET_ARG_FORM,GET_ARG_TYPE,GET_COOKIE_COUNT,GET_COOKIES,' +
|
|
'GET_DETAILED_SQLCODE,GET_DETAILED_SQLERRM,GET_ERROR_MESSAGE,' +
|
|
'GET_HASH_VALUE,GET_HEADER_COUNT,GET_INDEXES,GET_INFORMATION,' +
|
|
'GET_OBJECT_NULL_VECTOR_ARG,GET_PARAMETER_VALUE,' +
|
|
'GET_PERSISTENT_CONN_COUNT,GET_RAW,GET_RESPONSE,GET_RUNTIME_INFO,' +
|
|
'GET_RUNTIME_PARM_ID,GET_SESSION_TIMEOUT,GET_SYSTEM_CHANGE_NUMBER,' +
|
|
'GET_TAG,GET_TIME,GET_TIMEOUT,GET_TIMEOUT_BEHAVIOR,GET_VALUE,' +
|
|
'GETCHUNKSIZE,GETLENGTH,GLB,GREATEST,GREATEST_LB,GROUP_ID,GROUPING,' +
|
|
'GROUPING_ID,HEXTORAW,I_AM_A_REFRESH,INITCAP,INITIALIZE,' +
|
|
'INSTANTIATE_OFFLINE,INSTANTIATE_ONLINE,INSTR,INSTRB,' +
|
|
'INTERNAL_VERSION_CHECK,IS_CLUSTER_DATABASE,IS_LOCATOR,IS_OPEN,' +
|
|
'IS_ROLE_ENABLED,IS_SESSION_ALIVE,IS_TRIGGER_FIRE_ONCE,ISTEMPORARY,LAG,' +
|
|
'LAST,LAST_DAY,LAST_ERROR_POSITION,LAST_ROW_COUNT,LAST_ROW_ID,' +
|
|
'LAST_SQL__CODE,LAST_VALUE,LEAD,LEAST,LEAST_LB,LENGTH,LENGTHB,LINEAR,LN,' +
|
|
'LOCAL_TRANSACTION_ID,LOCALTIMESTAMP,LOG,LOWER,LPAD,LTRIM,LUB,' +
|
|
'MAKE_DATA_BLOCK_ADDRESS,MAKE_REF,MAP_ALL,MAP_ELEMENT,MAP_FILE,' +
|
|
'MAP_OBJECT,MAX,MIN,MINE_VALUE,MISCELLANEOUS,MOD,MONTHS_BETWEEN,NCHR,' +
|
|
'NEW_TIME,NEXT_DAY,NEXT_ITEM_TYPE,NLS_CHARSET_DECL_LEN,NLS_CHARSET_ID,' +
|
|
'NLS_CHARSET_NAME,NLS_INITCAP,NLS_LOWER,NLS_SORT,NLS_UPPER,NLSSORT,NTILE,' +
|
|
'NULLIF,NUMTODSINTERVAL,NUMTOYMINTERVAL,NVARRAY_FIND_NAME,' +
|
|
'NVARRAY_FIND_NAME_TYPE,NVARRAY_GET,NVARRAY_GET_BOOLEAN,NVARRAY_GET_BYTE,' +
|
|
'NVARRAY_GET_DATE,NVARRAY_GET_DOUBLE,NVARRAY_GET_FLOAT,' +
|
|
'NVARRAY_GET_INTEGER,NVARRAY_GET_LONG,NVARRAY_GET_RAW,NVARRAY_GET_SHORT,' +
|
|
'NVARRAY_GET_TEXT,NVL,NVL2,OBJECT,OPEN_CURSOR,OVER,OVERLAY,PATH,' +
|
|
'PAUSE_PROFILER,PERCENT_RANK,PERCENTILE_CONT,PERCENTILE_DISC,PMARKER,' +
|
|
'PORT_STRING,POWER,PURGE,PUSH,PUT_RAW,QUOTED_PRINTABLE_DECODE,' +
|
|
'QUOTED_PRINTABLE_ENCODE,RANDOM,RANK,RATIO_TO_REPORT,RATION_TO_REPORT,' +
|
|
'RAWTOHEX,RAWTONHEX,RECEIVE_MESSAGE,REFERENCE,REFTOHEX,REGR_AVGX,' +
|
|
'REGR_AVGY,REGR_COUNT,REGR_INTERCEPT,REGR_R2,REGR_SLOPE,REGR_SXX,' +
|
|
'REGR_SXY,REGR_SYY,REGRESSION,REMOVE_PIPE,REPLACE,REPLICATION_IS_ON,' +
|
|
'REQUEST,REQUEST_PIECES,RESTORE,RESUME_PROFILER,RETURNING,ROLLUP,ROUND,' +
|
|
'ROW_NUMBER,ROWID_BLOCK_NUMBER,ROWID_CREATE,ROWID_OBJECT,' +
|
|
'ROWID_RELATIVE_FNO,ROWID_ROW_NUMBER,ROWID_TO_ABSOLUTE_FNO,' +
|
|
'ROWID_TO_EXTENDED,ROWID_TO_RESTRICTED,ROWID_TYPE,ROWID_VERIFY,' +
|
|
'ROWIDTOCHAR,ROWIDTONCHAR,RPAD,RTRIM,SEND_MESSAGE,SESSIONTIMEZONE,' +
|
|
'SET_BREAKPOINT,SET_OER_BREAKPOINT,SET_TIMEOUT,SET_VALUE,SIGN,SIN,SINH,' +
|
|
'SOUNDEX,SPACE_ERROR_INFO,SQLCODE,SQLERRM,SQRT,START_PROFILER,STDDEV,' +
|
|
'STDDEV_POP,STDDEV_SAMP,STDDEVP,STDDEVS,STEP_ID,STOP_PROFILER,SUBSTR,' +
|
|
'SUBSTRB,SUM,SYNCHRONIZE,SYS_CONNECT_BY_PATH,SYS_CONTEXT,SYS_DBURIGEN,' +
|
|
'SYS_EXTRACT_UTC,SYS_GUID,SYS_TYPEID,SYS_XMLAGG,SYS_XMLGEN,SYSDATE,' +
|
|
'SYSTIMESTAMP,TAN,TANH,TO_CHAR,TO_CLOB,TO_DATE,TO_DSINTERVAL,TO_LABEL,' +
|
|
'TO_LOB,TO_MULTI_BYTE,TO_NCHAR,TO_NCLOB,TO_NUMBER,TO_SINGLE_BYTE,' +
|
|
'TO_TIMESTAMP,TO_TIMESTAMP_TZ,TO_YMINTERVAL,TRANSLATE,TRANSLITERATE,' +
|
|
'TREAT,TRIM,TRUNC,TZ_OFFSET,UID,UNDER_PATH,UNESCAPE,UNIQUE_SESSION_ID,' +
|
|
'UNIQUE_SESSION_NAME,UNISTR,UPDATEXML,UPPER,USER,USERENV,USING,UUDECODE,' +
|
|
'UUENCODE,VALUE,VAR_POP,VAR_SAMP,VARIANCE,VARP,VARS,VSIZE,WIDTH_BUCKET,' +
|
|
'XMLAGG,XMLCOLATTVAL,XMLCONCAT,XMLELEMENT,XMLFOREST,XMLSEQUENCE,' +
|
|
'XMLTRANSFORM,XRANGE';
|
|
|
|
OracleDefaultPackages: string =
|
|
'DBMS_ALERT,DBMS_APPLICATION_INFO,DBMS_APPLY_ADM,DBMS_AQ,' +
|
|
'DBMS_AQ_EXP_HISTORY_TABLES,DBMS_AQ_EXP_INDEX_TABLES,' +
|
|
'DBMS_AQ_EXP_QUEUE_TABLES,DBMS_AQ_EXP_QUEUES,' +
|
|
'DBMS_AQ_EXP_SUBSCRIBER_TABLES,DBMS_AQ_EXP_TIMEMGR_TABLES,' +
|
|
'DBMS_AQ_EXP_ZECURITY,DBMS_AQ_IMP_INTERNAL,DBMS_AQ_IMP_ZECURITY,' +
|
|
'DBMS_AQ_IMPORT_INTERNAL,DBMS_AQ_SYS_EXP_ACTIONS,' +
|
|
'DBMS_AQ_SYS_EXP_INTERNAL,DBMS_AQ_SYS_IMP_INTERNAL,DBMS_AQADM,' +
|
|
'DBMS_AQADM_SYS,DBMS_AQADM_SYSCALLS,DBMS_AQELM,DBMS_AQIN,' +
|
|
'DBMS_AQJMS,DBMS_BACKUP_RESTORE,DBMS_CAPTURE_ADM,DBMS_DDL,' +
|
|
'DBMS_DEBUG,DBMS_DEFER,DBMS_DEFER_IMPORT_INTERNAL,DBMS_DEFER_QUERY,' +
|
|
'DBMS_DEFER_SYS,DBMS_DESCRIBE,DBMS_DISTRIBUTED_TRUST_ADMIN,' +
|
|
'DBMS_EXPORT_EXTENSION,DBMS_FGA,DBMS_FLASHBACK,DBMS_HS_PASSTHROUGH,' +
|
|
'DBMS_IJOB,DBMS_INTERNAL_TRIGGER,DBMS_IOT,DBMS_IREFRESH,DBMS_ISNAPSHOT,' +
|
|
'DBMS_JAVA_TEST,DBMS_JOB,DBMS_LDAP,DBMS_LIBCACHE,DBMS_LOB,DBMS_LOCK,' +
|
|
'DBMS_LOGMNR,DBMS_LOGMNR_CDC_PUBLISH,DBMS_LOGMNR_CDC_SUBSCRIBE,' +
|
|
'DBMS_LOGMNR_D,DBMS_LOGSTDBY,DBMS_METADATA,DBMS_MGWADM,' +
|
|
'DBMS_MGWMSG,DBMS_MVIEW,DBMS_OBFUSCATION_TOOLKIT,DBMS_ODCI,' +
|
|
'DBMS_OFFLINE_OG,DBMS_OFFLINE_SNAPSHOT,DBMS_OLAP,' +
|
|
'DBMS_ORACLE_TRACE_AGENT,DBMS_ORACLE_TRACE_USER,DBMS_OUTLN,' +
|
|
'DBMS_OUTLN_EDIT,DBMS_OUTPUT,DBMS_PCLXUTIL,DBMS_PICKLER,DBMS_PIPE,' +
|
|
'DBMS_PITR,DBMS_PLUGTS,DBMS_PROFILER,DBMS_PROPAGATION_ADM,' +
|
|
'DBMS_PRVTAQIM,DBMS_PRVTAQIP,DBMS_PRVTAQIS,DBMS_PRVTRMIE,DBMS_PSP,' +
|
|
'DBMS_PSWMG_IMPORT,DBMS_RANDOM,DBMS_RCVMAN,DBMS_RECTIFIER_DIFF,' +
|
|
'DBMS_REDEFINITION,DBMS_REFRESH,DBMS_REFRESH_EXP_LWM,' +
|
|
'DBMS_REFRESH_EXP_SITES,DBMS_REPAIR,DBMS_REPCAT,DBMS_REPCAT_ADMIN,' +
|
|
'DBMS_REPCAT_AUTH,DBMS_REPCAT_INSTANTIATE,DBMS_REPCAT_RGT,DBMS_REPUTIL,' +
|
|
'DBMS_RESOURCE_MANAGER,DBMS_RESOURCE_MANAGER_PRIVS,DBMS_RESUMABLE,' +
|
|
'DBMS_RLS,DBMS_RMGR_GROUP_EXPORT,DBMS_RMGR_PACT_EXPORT,' +
|
|
'DBMS_RMGR_PLAN_EXPORT,DBMS_RMIN,DBMS_ROWID,DBMS_RULE,DBMS_RULE_ADM,' +
|
|
'DBMS_RULE_EXIMP,DBMS_SESSION,DBMS_SHARED_POOL,DBMS_SNAP_INTERNAL,' +
|
|
'DBMS_SNAP_REPAPI,DBMS_SNAPSHOT,DBMS_SNAPSHOT_UTL,DBMS_SPACE,' +
|
|
'DBMS_SPACE_ADMIN,DBMS_SQL,DBMS_STANDARD,DBMS_STATS,DBMS_STORAGE_MAP,' +
|
|
'DBMS_STREAMS,DBMS_STREAMS_ADM,DBMS_SUMADV,DBMS_SUMMARY,' +
|
|
'DBMS_SUMREF_CHILD,DBMS_SUMREF_PARENT,DBMS_SUMREF_UTIL,' +
|
|
'DBMS_SUMREF_UTIL2,DBMS_SUMVDM,DBMS_SYS_ERROR,DBMS_SYS_SQL,' +
|
|
'DBMS_SYSTEM,DBMS_TRACE,DBMS_TRANSACTION,DBMS_TRANSFORM,DBMS_TTS,' +
|
|
'DBMS_TYPES,DBMS_UTILITY,DBMS_WM,DBMS_XDB,DBMS_XDB_VERSION,DBMS_XDBT,' +
|
|
'DBMS_XMLDOM,DBMS_XMLGEN,DBMS_XMLPARSER,DBMS_XMLQUERY,' +
|
|
'DBMS_XMLSAVE,DBMS_XPLAN,DBMS_XSLPROCESSOR,DBMS_ZHELP,DBMS_ZHELP_IR,' +
|
|
'DBMSZEXP_SYSPKGGRNT,DEBUG_EXTPROC,DIANA,DIUTIL,ODCICONST,OUTLN_PKG,' +
|
|
'PBREAK,PBRPH,PBSDE,PBUTL,PIDL,PLITBLM,SDO_CS,SDO_GEOM,SDO_LRS,' +
|
|
'SDO_MIGRATE,SDO_TUNE,SDO_UTIL,STANDARD,SYS_STUB_FOR_PURITY_ANALYSIS,' +
|
|
'UTL_COLL,UTL_ENCODE,UTL_FILE,UTL_FILE_DIR,UTL_HTTP,UTL_INADDR,UTL_PG,' +
|
|
'UTL_RAW,UTL_REF,UTL_SMTP,UTL_TCP,UTL_URL';
|
|
|
|
OracleSQLPlusCommands: string =
|
|
'APP,APPINFO,AQ$_AGENT,AQ$_AGENT_LIST_T,AQ$_DESCRIPTOR,AQ$_POST_INFO,' +
|
|
'AQ$_POST_INFO_LIST,AQ$_RECIPIENT_LIST_T,AQ$_REG_INFO,AQ$_REG_INFO_LIST,' +
|
|
'AQ$_SUBSCRIBER_LIST_T,ARCHIVE,ARRAYSIZE,ATTRIBUTE,AUTOCOMMIT,AUTOP,' +
|
|
'AUTOPRINT,AUTORECOVERY,AUTOT,AUTOTRACE,BLO,BLOCKTERMINATOR,BRE,BREAK,' +
|
|
'BTI,BTITLE,BUFFER,CL,CLEAR,CLOSECURSOR,CMDS,CMDSEP,COL,COLSEP,COM,COMP,' +
|
|
'COMPAT,COMPATIBILITY,CON,CONN,COPY,COPYC,COPYCOMMIT,COPYTYPECHECK,DEF,' +
|
|
'DEFINE,DESC,DESCR,DESCRI,DESCRIB,DESCRIBE,DISC,DISCO,DISCON,DISCONN,' +
|
|
'DISCONNE,DISCONNEC,DISCONNECT,EA,ECHO,EDITF,EDITFILE,EMB,' +
|
|
'EMBEDDED,ESC,EXEC,EXECUTE,FAILURE,FEED,FEEDBACK,FLAGGER,FLU,FULL,GET,' +
|
|
'HEA,HEADING,HEADS,HEADSEP,HELP,HO,HOST,INPUT,INTERMED,INTERMEDIATE,INV,' +
|
|
'INVISIBLE,LIN,LINESIZE,LO,LOBOF,LOBOFFSET,LOGON,LOGSOURCE,LONGC,' +
|
|
'LONGCHUNKSIZE,MARKUP,MAXDATA,MIX,MIXED,NATIVE,NEWP,NEWPAGE,NUM,' +
|
|
'NUMF,NUMFORMAT,NUMWIDTH,OFF,OSERROR,PAGES,PAGESIZE,PASSW,PAU,PAUSE,' +
|
|
'PPRINT,PRI,PRINT,PROMPT,RECSEP,RECSEPCHAR,REPF,REPFOOTER,REPH,REPHEADER,' +
|
|
'RUN,SAVE,SCAN,SERVEROUTPUT,SET,SHIFT,SHIFTINOUT,SHO,SHOW,SHUTDOWN,' +
|
|
'SILENT,SPOOL,SQLBL,SQLBLANKLINES,SQLC,SQLCASE,SQLCO,SQLCONTINUE,SQLN,' +
|
|
'SQLNUMBER,SQLP,SQLPRE,SQLPREFIX,SQLPROMPT,SQLT,SQLTERMINATOR,STA,' +
|
|
'STARTUP,STATEMENT_ID,STORE,SUCCESS,SUF,SUFFIX,TAB,TERM,TERMOUT,TI,TIMI,' +
|
|
'TIMING,TRIMOUT,TRIMS,TRIMSPOOL,TTI,TTITLE,UND,UNDEF,UNDEFINE,' +
|
|
'UNDERLINE,UP,VAR,VARIABLE,VER,VERIFY,VERSION,VIS,VISIBLE,WHENEVER,WR,' +
|
|
'WRA,WRAP,WRAPPED';
|
|
|
|
OracleCommentKW: string =
|
|
'REM,REMA,REMAR,REMARK';
|
|
|
|
//---Postgresql-----------------------------------------------------------------
|
|
//Postgresql Keywords
|
|
PostgresKW: String =
|
|
'IF,LOOP,ABORT,ABSOLUTE,ACCESS,ACTION,ADA,ADD,ADMIN,AFTER,AGGREGATE,ALIAS' +
|
|
',ALLOCATE,ALTER,ANALYSE,ANALYZE,AND,ARE,AS,ASC,ASENSITIVE' +
|
|
',ASSERTION,ASSIGNMENT,ASYMMETRIC,AT,ATOMIC,AUTHORIZATION,BACKWARD' +
|
|
',BEFORE,BEGIN,BETWEEN' +
|
|
',BOTH,BREADTH,BY,C,CACHE,CALL,CALLED,CARDINALITY,CASCADE,CASCADED,CASE' +
|
|
',CAST,CATALOG,CATALOG_NAME,CHAIN,CHARACTERISTICS' +
|
|
',CHARACTER_SET_CATALOG,CHARACTER_SET_NAME,CHARACTER_SET_SCHEMA' +
|
|
',CHECK,CHECKED,CHECKPOINT,CLASS,CLASS_ORIGIN,CLOB,CLOSE,CLUSTER,COBOL,COLLATE' +
|
|
',COLLATION,COLLATION_CATALOG,COLLATION_NAME,COLLATION_SCHEMA,COLUMN,COLUMN_NAME' +
|
|
',COMMAND_Function,COMMAND_Function_CODE,COMMENT,COMMIT,COMMITTED,COMPLETION' +
|
|
',CONDITION_NUMBER,CONNECT,CONNECTION,CONNECTION_NAME,CONSTRAINT,CONSTRAINTS' +
|
|
',CONSTRAINT_CATALOG,CONSTRAINT_NAME,CONSTRAINT_SCHEMA,CONSTRUCTOR,CONTAINS' +
|
|
',CONTINUE,CONVERSION,COPY,CORRESPONDING,CREATE,CREATEDB,CREATEUSER' +
|
|
',CROSS,CUBE,CURRENT,CURRENT_PATH,CURRENT_ROLE' +
|
|
',CURSOR,CURSOR_NAME,CYCLE,DATA,DATABASE,DATETIME_INTERVAL_CODE' +
|
|
',DATETIME_INTERVAL_PRECISION,DAY,DEALLOCATE,DEC,DECLARE,DEFAULT,DEFERRABLE' +
|
|
',DEFERRED,DEFINED,DEFINER,DELETE,DELIMITER,DELIMITERS,DEPTH,DEREF,DESC,DESCRIBE' +
|
|
',DESCRIPTOR,DESTROY,DESTRUCTOR,DETERMINISTIC,DIAGNOSTICS,DICTIONARY,DISCONNECT' +
|
|
',DISPATCH,DISTINCT,DO,DOMAIN,DROP,DYNAMIC,DYNAMIC_Function,DYNAMIC_Function_CODE' +
|
|
',EACH,ELSE,ELSIF,ELSEIF,ENCODING,ENCRYPTED,END,EQUALS,ESCAPE,EXCEPT,EXCEPTION' +
|
|
',EXCLUSIVE,EXEC,EXECUTE,EXISTING,EXPLAIN,EXTERNAL,FALSE,FETCH' +
|
|
',FINAL,FIRST,FOR,FORCE,FOREIGN,FORTRAN,FORWARD,FOUND,FREE,FREEZE,FROM' +
|
|
',FULL,Function,G,GENERAL,GENERATED,GET,GLOBAL,GO,GOTO,GRANT,GRANTED,GROUP' +
|
|
',GROUPING,HANDLER,HAVING,HIERARCHY,HOLD,HOUR,IDENTITY,IGNORE,ILIKE' +
|
|
',IMMEDIATE,IMMUTABLE,IMPLEMENTATION,IMPLICIT,INCREMENT,INDEX,INDICATOR' +
|
|
',INFIX,INHERITS,INITIALIZE,INITIALLY,INNER,INOUT,INPUT,INSENSITIVE,INSERT' +
|
|
',INSTANCE,INSTANTIABLE,INSTEAD,INT,INTERSECT,INTO,INVOKER' +
|
|
',IS,ISNULL,ISOLATION,ITERATE,JOIN,K,KEY,KEY_MEMBER,KEY_TYPE,LANCOMPILER,LANGUAGE' +
|
|
',LARGE,LAST,LATERAL,LEADING,LEFT,LESS,LEVEL,LIKE,LIMIT,LISTEN,LOAD,LOCAL' +
|
|
' LOCATION,LOCATOR,LOCK,M,MAP,MATCH,MAXVALUE,MESSAGE_LENGTH' +
|
|
',MESSAGE_OCTET_LENGTH,MESSAGE_TEXT,METHOD,MINUTE,MINVALUE,MODE,MODIFIES' +
|
|
',MODIFY,MODULE,MONTH,MORE,MOVE,MUMPS,NAME,NAMES,NATIONAL,NATURAL,NCHAR,NCLOB' +
|
|
',NEW,NEXT,NO,NOCREATEDB,NOCREATEUSER,NONE,NOT,NOTHING,NOTIFY,NOTNULL,NULL,NULLABLE' +
|
|
',NUMBER,OBJECT,OF,OFF,OFFSET,OIDS,OLD,ON,ONLY,OPEN' +
|
|
',OPERATION,Operator,OPTION,OPTIONS,OR,ORDER,ORDINALITY,OUT,OUTER,OUTPUT,OVERLAPS' +
|
|
',OVERRIDING,OWNER,PAD,PARAMETER,PARAMETERS,PARAMETER_MODE,PARAMETER_NAME,PARAMETER_ORDINAL_POSITION' +
|
|
',PARAMETER_SPECIFIC_CATALOG,PARAMETER_SPECIFIC_NAME,PARAMETER_SPECIFIC_SCHEMA,PARTIAL,PASCAL,PASSWORD' +
|
|
',PENDANT,PLACING,PLI,POSTFIX,PRECISION,PREFIX,PREORDER,PREPARE,PRESERVE,PRIMARY' +
|
|
',PRIOR,PRIVILEGES,PROCEDURAL,PROCEDURE,PUBLIC,READ,READS,RECHECK,RECURSIVE,REF,REFERENCES' +
|
|
',REFERENCING,REINDEX,RELATIVE,RENAME ,REPEATABLE,RESET,RESTRICT,RESULT,RETURN,RETURNED_LENGTH' +
|
|
',RETURNED_OCTET_LENGTH,RETURNED_SQLSTATE,RETURNS,REVOKE,RIGHT,ROLE,ROLLBACK,ROLLUP,ROUTINE,ROUTINE_CATALOG' +
|
|
',ROUTINE_NAME,ROUTINE_SCHEMA,ROW,ROWS,ROW_COUNT,RULE,SAVEPOINT,SCALE,SCHEMA,SCHEMA_NAME' +
|
|
',SCOPE,SCROLL,SEARCH,SECOND,SECTION,SECURITY,SELECT,SELF,SENSITIVE,SEQUENCE,SERIALIZABLE,SERVER_NAME' +
|
|
',SESSION,SET,SETOF,SETS,SHARE,SHOW,SIMILAR,SIMPLE,SIZE,SOURCE,SPACE' +
|
|
',SPECIFIC,SPECIFICTYPE,SPECIFIC_NAME,SQLCODE,SQLERROR,SQLEXCEPTION,SQLSTATE,SQLWARNING' +
|
|
',STABLE,START,STATE,STATEMENT,STATIC,STATISTICS,STDIN,STDOUT,STORAGE,STRICT,STRUCTURE' +
|
|
',STYLE,SUBCLASS_ORIGIN,SUBLIST,SYMMETRIC,SYSID,SYSTEM,SYSTEM_USER,TABLE' +
|
|
',TABLE_NAME,TEMP,TEMPLATE,TEMPORARY,TERMINATE,THAN,THEN,TIMEZONE_HOUR' +
|
|
',TIMEZONE_MINUTE,TO,TOAST,TRAILING,TRANSACTION,TRANSACTIONS_COMMITTED,TRANSACTIONS_ROLLED_BACK' +
|
|
',TRANSACTION_ACTIVE,TRANSFORM,TRANSFORMS,TRANSLATION,TREAT,TRIGGER_CATALOG' +
|
|
',TRIGGER_NAME,TRIGGER_SCHEMA,TRUE,TRUNCATE,TRUSTED,TYPE,UNCOMMITTED,UNDER,UNENCRYPTED,UNION'+
|
|
',UNIQUE,UNKNOWN,UNLISTEN,UNNAMED,UNNEST,UNTIL,UPDATE,USAGE,USER_DEFINED_TYPE_CATALOG' +
|
|
',USER_DEFINED_TYPE_NAME,USER_DEFINED_TYPE_SCHEMA,USING,VACUUM,VALID,VALIDATOR,VALUE,VALUES' +
|
|
',VARIABLE,VARYING,VERBOSE,VIEW,VOLATILE,WHEN,WHENEVER,WHERE,WITH,WITHOUT,WORK,WRITE,YEAR,ZONE';
|
|
|
|
//Postgresql Functions
|
|
PostgresFunctions:String =
|
|
'abs,cbrt,ceil,ceiling,degrees,exp,floor,ln,log,mod,pi,power,radians,random,'+
|
|
'round,setseed,sign,sqrt,trunc,width_bucket,acos,asin,atan,atan2,cos,cot,'+
|
|
'sin,tan,bit_length,char_length,character_length,convert,lower,octet_length,'+
|
|
'overlay,position,substring,trim,upper,ascii,btrim,chr,decode,'+
|
|
'encode,initcap,length,lpad,ltrim,md5,pg_client_encoding,quote_ident,quote_literal,'+
|
|
'replace,rpad,rtrim,split_part,strpos,substr,to_ascii,to_hex,translate,get_byte,'+
|
|
'set_byte,get_bit,set_bit,to_char,to_date,'+
|
|
'to_timestamp,to_number,age,date_part,date_trunc,extract,now,'+
|
|
'timeofday,isfinite,area,box_intersect,center,diameter,height,isclosed,isopen,'+
|
|
'npoints,pclose,popen,radius,width,'+
|
|
'broadcast,'+
|
|
'host,masklen,set_masklen,netmask,hostmask,network,abbrev,family,nextval,'+
|
|
'currval,setval,coalesce,nullif,array_cat ,array_append ,array_prepend ,array_dims,'+
|
|
'array_lower ,array_upper ,array_to_string ,string_to_array ,avg,bit_and,bit_or,bool_and,'+
|
|
'bool_or,count,every,max,min,stddev,sum,variance,exists ,in ,some,'+
|
|
'all ,generate_series,current_database,current_schema,'+
|
|
'current_schemas,,inet_client_addr,inet_client_port,inet_server_addr,inet_server_port,'+
|
|
'version,has_table_privilege,has_database_privilege,'+
|
|
'has_function_privilege,has_language_privilege,'+
|
|
'has_schema_privilege,has_tablespace_privilege,'+
|
|
'pg_table_is_visible,pg_type_is_visible,pg_function_is_visible,pg_operator_is_visible,'+
|
|
'pg_opclass_is_visible,pg_conversion_is_visible,format_type,pg_get_viewdef,'+
|
|
'pg_get_ruledef,pg_get_indexdef,'+
|
|
'pg_get_triggerdef,pg_get_constraintdef,pg_get_expr,'+
|
|
'pg_get_userbyid,pg_get_serial_sequence,pg_tablespace_databases,obj_description,'+
|
|
'col_description,current_setting,set_config,pg_cancel_backend,pg_start_backup,pg_stop_backup,'+
|
|
'current_user,current_date,current_time,current_timestamp,localtime,localtimestamp,session_user,user';
|
|
|
|
//Postgresql Types
|
|
PostgresTypes: String =
|
|
'smallint,integer,bigint,decimal,numeric,real,double,serial,bigserial,'+
|
|
'character,varchar,char,text,bytea,timestamp, interval,date,'+
|
|
'time,boolean,point,line,lseg,box,path,polygon,circle,cidr,inet,'+
|
|
'macaddr,BIT,bitvar,ARRAY,oid,regproc,regprocedure,regoper,regoperator,regclass,'+
|
|
'regtype,any,anyarray,anyelement,cstring,internal,language_handler,record,'+
|
|
'trigger,void,opaque,refcursor,binary,blob,int4,int2,int8,float,float4,float8';
|
|
|
|
//Postgresql Exceptions
|
|
PostgresExceptions: String =
|
|
'$BODY$,SUCCESSFUL_COMPLETION,WARNING,DYNAMIC_RESULT_SETS_RETURNED,IMPLICIT_ZERO_BIT_PADDING,NULL_VALUE_ELIMINATED_IN_SET_FUNCTION,'+
|
|
'PRIVILEGE_NOT_GRANTED,PRIVILEGE_NOT_REVOKED,STRING_DATA_RIGHT_TRUNCATION,DEPRECATED_FEATURE,NO_DATA,NO_ADDITIONAL_DYNAMIC_RESULT_SETS_RETURNED,'+
|
|
'SQL_STATEMENT_NOT_YET_COMPLETE,CONNECTION_EXCEPTION,CONNECTION_DOES_NOT_EXIST,CONNECTION_FAILURE,SQLCLIENT_UNABLE_TO_ESTABLISH_SQLCONNECTION,'+
|
|
'SQLSERVER_REJECTED_ESTABLISHMENT_OF_SQLCONNECTION,TRANSACTION_RESOLUTION_UNKNOWN,PROTOCOL_VIOLATION,TRIGGERED_ACTION_EXCEPTION,'+
|
|
'FEATURE_NOT_SUPPORTED,INVALID_TRANSACTION_INITIATION,LOCATOR_EXCEPTION,INVALID_LOCATOR_SPECIFICATION,INVALID_GRANTOR,INVALID_GRANT_OPERATION,'+
|
|
'INVALID_ROLE_SPECIFICATION,CARDINALITY_VIOLATION,DATA_EXCEPTION,ARRAY_SUBSCRIPT_ERROR,CHARACTER_NOT_IN_REPERTOIRE,DATETIME_FIELD_OVERFLOW,'+
|
|
'DIVISION_BY_ZERO,ERROR_IN_ASSIGNMENT,ESCAPE_CHARACTER_CONFLICT,INDICATOR_OVERFLOW,INTERVAL_FIELD_OVERFLOW,INVALID_ARGUMENT_FOR_LOGARITHM,'+
|
|
'INVALID_ARGUMENT_FOR_POWER_FUNCTION,INVALID_ARGUMENT_FOR_WIDTH_BUCKET_FUNCTION,INVALID_CHARACTER_VALUE_FOR_CAST,INVALID_DATETIME_FORMAT,'+
|
|
'INVALID_ESCAPE_CHARACTER,INVALID_ESCAPE_OCTET,INVALID_ESCAPE_SEQUENCE,INVALID_INDICATOR_PARAMETER_VALUE,INVALID_LIMIT_VALUE,'+
|
|
'INVALID_PARAMETER_VALUE,INVALID_REGULAR_EXPRESSION,INVALID_TIME_ZONE_DISPLACEMENT_VALUE,INVALID_USE_OF_ESCAPE_CHARACTER,'+
|
|
'MOST_SPECIFIC_TYPE_MISMATCH,NULL_VALUE_NOT_ALLOWED,NULL_VALUE_NO_INDICATOR_PARAMETER,NUMERIC_VALUE_OUT_OF_RANGE,STRING_DATA_LENGTH_MISMATCH,'+
|
|
'SUBSTRING_ERROR,TRIM_ERROR,UNTERMINATED_C_STRING,ZERO_LENGTH_CHARACTER_STRING,FLOATING_POINT_EXCEPTION,'+
|
|
'INVALID_TEXT_REPRESENTATION,INVALID_BINARY_REPRESENTATION,BAD_COPY_FILE_FORMAT,UNTRANSLATABLE_CHARACTER,INTEGRITY_CONSTRAINT_VIOLATION,'+
|
|
'RESTRICT_VIOLATION,NOT_NULL_VIOLATION,FOREIGN_KEY_VIOLATION,UNIQUE_VIOLATION,CHECK_VIOLATION,INVALID_CURSOR_STATE,INVALID_TRANSACTION_STATE,'+
|
|
'ACTIVE_SQL_TRANSACTION,BRANCH_TRANSACTION_ALREADY_ACTIVE,HELD_CURSOR_REQUIRES_SAME_ISOLATION_LEVEL,INAPPROPRIATE_ACCESS_MODE_FOR_BRANCH_TRANSACTION,'+
|
|
'INAPPROPRIATE_ISOLATION_LEVEL_FOR_BRANCH_TRANSACTION,NO_ACTIVE_SQL_TRANSACTION_FOR_BRANCH_TRANSACTION,READ_ONLY_SQL_TRANSACTION,'+
|
|
'SCHEMA_AND_DATA_STATEMENT_MIXING_NOT_SUPPORTED,NO_ACTIVE_SQL_TRANSACTION,IN_FAILED_SQL_TRANSACTION,INVALID_SQL_STATEMENT_NAME,TRIGGERED_DATA_CHANGE_VIOLATION,'+
|
|
'INVALID_AUTHORIZATION_SPECIFICATION,DEPENDENT_PRIVILEGE_DESCRIPTORS_STILL_EXIST,DEPENDENT_OBJECTS_STILL_EXIST,INVALID_TRANSACTION_TERMINATION,'+
|
|
'SQL_ROUTINE_EXCEPTION,FUNCTION_EXECUTED_NO_RETURN_STATEMENT,MODIFYING_SQL_DATA_NOT_PERMITTED,PROHIBITED_SQL_STATEMENT_ATTEMPTED,READING_SQL_DATA_NOT_PERMITTED,'+
|
|
'INVALID_CURSOR_NAME,EXTERNAL_ROUTINE_EXCEPTION,CONTAINING_SQL_NOT_PERMITTED,'+
|
|
'EXTERNAL_ROUTINE_INVOCATION_EXCEPTION,INVALID_SQLSTATE_RETURNED,TRIGGER_PROTOCOL_VIOLATED,'+
|
|
'SRF_PROTOCOL_VIOLATED,SAVEPOINT_EXCEPTION,INVALID_SAVEPOINT_SPECIFICATION,INVALID_CATALOG_NAME,INVALID_SCHEMA_NAME,TRANSACTION_ROLLBACK,'+
|
|
'TRANSACTION_INTEGRITY_CONSTRAINT_VIOLATION,SERIALIZATION_FAILURE,STATEMENT_COMPLETION_UNKNOWN,DEADLOCK_DETECTED,SYNTAX_ERROR_OR_ACCESS_RULE_VIOLATION,'+
|
|
'SYNTAX_ERROR,INSUFFICIENT_PRIVILEGE,CANNOT_COERCE,GROUPING_ERROR,INVALID_FOREIGN_KEY,INVALID_NAME,NAME_TOO_LONG,RESERVED_NAME,DATATYPE_MISMATCH,'+
|
|
'INDETERMINATE_DATATYPE,WRONG_OBJECT_TYPE,UNDEFINED_COLUMN,UNDEFINED_FUNCTION,UNDEFINED_TABLE,UNDEFINED_PARAMETER,UNDEFINED_OBJECT,'+
|
|
'DUPLICATE_COLUMN,DUPLICATE_CURSOR,DUPLICATE_DATABASE,DUPLICATE_FUNCTION,DUPLICATE_PREPARED_STATEMENT,DUPLICATE_SCHEMA,DUPLICATE_TABLE,'+
|
|
'DUPLICATE_ALIAS,DUPLICATE_OBJECT,AMBIGUOUS_COLUMN,AMBIGUOUS_FUNCTION,AMBIGUOUS_PARAMETER,AMBIGUOUS_ALIAS,INVALID_COLUMN_REFERENCE,'+
|
|
'INVALID_COLUMN_DEFINITION,INVALID_CURSOR_DEFINITION,INVALID_DATABASE_DEFINITION,INVALID_FUNCTION_DEFINITION,INVALID_PREPARED_STATEMENT_DEFINITION,'+
|
|
'INVALID_SCHEMA_DEFINITION,INVALID_TABLE_DEFINITION,INVALID_OBJECT_DEFINITION,WITH_CHECK_OPTION_VIOLATION,INSUFFICIENT_RESOURCES,'+
|
|
'DISK_FULL,OUT_OF_MEMORY,TOO_MANY_CONNECTIONS,PROGRAM_LIMIT_EXCEEDED,STATEMENT_TOO_COMPLEX,TOO_MANY_COLUMNS,TOO_MANY_ARGUMENTS,'+
|
|
'OBJECT_NOT_IN_PREREQUISITE_STATE,OBJECT_IN_USE,CANT_CHANGE_RUNTIME_PARAM,LOCK_NOT_AVAILABLE,OPERATOR_INTERVENTION,QUERY_CANCELED,'+
|
|
'ADMIN_SHUTDOWN,CRASH_SHUTDOWN,CANNOT_CONNECT_NOW,IO_ERROR,UNDEFINED_FILE,DUPLICATE_FILE,CONFIG_FILE_ERROR,LOCK_FILE_EXISTS,'+
|
|
'PLPGSQL_ERROR,RAISE_EXCEPTION,INTERNAL_ERROR,DATA_CORRUPTED,INDEX_CORRUPTED';
|
|
|
|
//---MS-SQL 7-------------------------------------------------------------------
|
|
// keywords
|
|
MSSQL7KW: string =
|
|
'ABSOLUTE,ADD,ALL,ALTER,ANY,AS,ASC,AUTHORIZATION,AVG,BACKUP,BEGIN,' +
|
|
'BETWEEN,BREAK,BROWSE,BULK,BY,CASCADE,CHECK,CHECKPOINT,CLOSE,CLUSTERED,' +
|
|
'COLUMN,COMMIT,COMMITTED,COMPUTE,CONFIRM,CONSTRAINT,CONTAINS,' +
|
|
'CONTAINSTABLE,CONTINUE,CONTROLROW,COUNT,CREATE,CROSS,CURRENT,' +
|
|
'CURRENT_DATE,CURRENT_TIME,CURSOR,DATABASE,DBCC,DEALLOCATE,DECLARE,' +
|
|
'DEFAULT,DELETE,DENY,DESC,DISK,DISTINCT,DISTRIBUTED,DOUBLE,DROP,DUMMY,' +
|
|
'DUMP,ELSE,END,ERRLVL,ERROREXIT,ESCAPE,EXCEPT,EXEC,EXECUTE,EXISTS,EXIT,' +
|
|
'FETCH,FILE,FILLFACTOR,FIRST,FLOPPY,FOR,FOREIGN,FREETEXT,FREETEXTTABLE,' +
|
|
'FROM,FULL,GLOBAL,GOTO,GRANT,GROUP,HAVING,HOLDLOCK,IDENTITY,IDENTITYCOL,' +
|
|
'IDENTITY_INSERT,IF,IN,INDEX,INNER,INSERT,INTERSECT,INTO,IS,ISOLATION,' +
|
|
'JOIN,KEY,KILL,LAST,LEFT,LEVEL,LIKE,LINENO,LOAD,MAX,MIN,MIRROREXIT,' +
|
|
'NATIONAL,NEXT,NOCHECK,NONCLUSTERED,NOT,NULL,OF,OFF,OFFSETS,ON,ONCE,' +
|
|
'ONLY,OPEN,OPENDATASOURCE,OPENQUERY,OPENROWSET,OPTION,OR,ORDER,OUTER,' +
|
|
'OVER,PERCENT,PERM,PERMANENT,PIPE,PLAN,PRECISION,PREPARE,PRIMARY,PRINT,' +
|
|
'PRIOR,PRIVILEGES,PROC,PROCEDURE,PROCESSEXIT,PUBLIC,RAISERROR,READ,' +
|
|
'READTEXT,RECONFIGURE,REFERENCES,RELATIVE,REPEATABLE,REPLICATION,RESTORE,' +
|
|
'RESTRICT,RETURN,REVOKE,RIGHT,ROLLBACK,ROWCOUNT,ROWGUIDCOL,RULE,SAVE,' +
|
|
'SCHEMA,SELECT,SERIALIZABLE,SET,SETUSER,SHUTDOWN,SOME,STATISTICS,SUM,' +
|
|
'TABLE,TAPE,TEMP,TEMPORARY,TEXTSIZE,THEN,TO,TOP,TRAN,TRANSACTION,TRIGGER,' +
|
|
'TRUNCATE,TSEQUAL,UNCOMMITTED,UNION,UNIQUE,UPDATE,UPDATETEXT,USE,USER,' +
|
|
'VALUES,VARYING,VIEW,WAITFOR,WHEN,WHERE,WHILE,WITH,WORK,WRITETEXT';
|
|
|
|
// functions
|
|
MSSQL7Functions: string =
|
|
'@@CONNECTIONS,@@CPU_BUSY,@@CURSOR_ROWS,@@DATEFIRST,@@DBTS,@@ERROR,' +
|
|
'@@FETCH_STATUS,@@IDENTITY,@@IDLE,@@IO_BUSY,@@LANGID,@@LANGUAGE,' +
|
|
'@@LOCK_TIMEOUT,@@MAX_CONNECTIONS,@@MAX_PRECISION,@@NESTLEVEL,@@OPTIONS,' +
|
|
'@@PACKET_ERRORS,@@PACK_RECEIVED,@@PACK_SENT,@@PROCID,@@REMSERVER,' +
|
|
'@@ROWCOUNT,@@SERVERNAME,@@SERVICENAME,@@SPID,@@TEXTSIZE,@@TIMETICKS,' +
|
|
'@@TOTAL_ERRORS,@@TOTAL_READ,@@TOTAL_WRITE,@@TRANCOUNT,@@VERSION,ABS,' +
|
|
'ACOS,AND,APP_NAME,ASCII,ASIN,ATAN,ATN2,CASE,CAST,CEILING,CHARINDEX,' +
|
|
'COALESCE,COLUMNPROPERTY,COL_LENGTH,COL_NAME,CONVERT,COS,COT,' +
|
|
'CURRENT_TIMESTAMP,CURRENT_USER,CURSOR_STATUS,DATABASEPROPERTY,' +
|
|
'DATALENGTH,DATEADD,DATEDIFF,DATENAME,DATEPART,DAY,DB_ID,DB_NAME,' +
|
|
'DEGREES,DIFFERENCE,EXP,FILEGROUPPROPERTY,FILEGROUP_ID,FILEGROUP_NAME,' +
|
|
'FILEPROPERTY,FILE_ID,FILE_NAME,FLOOR,FORMATMESSAGE,' +
|
|
'FULLTEXTCATALOGPROPERTY,FULLTEXTSERVICEPROPERTY,GETANSINULL,GETDATE,' +
|
|
'HOST_ID,HOST_NAME,IDENT_INCR,IDENT_SEED,INDEXPROPERTY,INDEX_COL,' +
|
|
'ISDATE,ISNULL,ISNUMERIC,IS_MEMBER,IS_SRVROLEMEMBER,LEN,LOG,LOG10,LOWER,' +
|
|
'LTRIM,MONTH,NEWID,NULLIF,OBJECTPROPERTY,OBJECT_ID,OBJECT_NAME,PARSENAME,' +
|
|
'PATINDEX,PERMISSIONS,PI,POWER,QUOTENAME,RADIANS,RAND,REPLACE,REPLICATE,' +
|
|
'REVERSE,ROUND,RTRIM,SESSION_USER,SIGN,SIN,SOUNDEX,SPACE,SQRT,SQUARE,' +
|
|
'STATS_DATE,STR,STUFF,SUBSTRING,SUSER_ID,SUSER_NAME,SUSER_SID,' +
|
|
'SUSER_SNAME,SYSTEM_USER,TAN,TEXTPTR,TEXTVALID,TYPEPROPERTY,UNICODE,' +
|
|
'UPPER,USER_ID,USER_NAME,YEAR';
|
|
|
|
// types
|
|
MSSQL7Types: string =
|
|
'BINARY,BIT,CHAR,DATETIME,DECIMAL,FLOAT,IMAGE,INT,MONEY,NCHAR,NTEXT,' +
|
|
'NUMERIC,NVARCHAR,REAL,SMALLDATETIME,SMALLINT,SMALLMONEY,SYSNAME,TEXT,' +
|
|
'TIMESTAMP,TINYINT,UNIQUEIDENTIFIER,VARBINARY,VARCHAR';
|
|
|
|
//---MS-SQL2K-------------------------------------------------------------------
|
|
// keywords
|
|
MSSQL2000KW =
|
|
'ADD,ALL,ALTER,AND,ANY,AS,ASC,AUTHORIZATION,BACKUP,' +
|
|
'BEGIN,BETWEEN,BREAK,BROWSE,BULK,BY,CASCADE,CASE,' +
|
|
'CHECK,CHECKPOINT,CLOSE,CLUSTERED,COLLATE,' +
|
|
'COLUMN,COMMIT,COMPUTE,CONSTRAINT,CONTAINS,CONTAINSTABLE,' +
|
|
'CONTINUE,CREATE,CROSS,CURRENT,CURSOR,DATABASE,' +
|
|
'DBCC,DEALLOCATE,DECLARE,DEFAULT,DELETE,DENY,DESC,DISK,' +
|
|
'DISTINCT,DISTRIBUTED,DOUBLE,DROP,DUMMY,DUMP,ELSE,END,' +
|
|
'ERRLVL,ESCAPE,EXCEPT,EXEC,EXECUTE,EXISTS,EXIT,FETCH,FILE,' +
|
|
'FILLFACTOR,FOR,FOREIGN,FORMSOF,FREETEXT,FREETEXTTABLE,FROM,FULL,' +
|
|
'FUNCTION,GOTO,GRANT,GROUP,HAVING,HOLDLOCK,IDENTITY,' +
|
|
'IDENTITYCOL,IDENTITY_INSERT,IF,IN,INFLECTIONAL,INDEX,INNER,INSERT,' +
|
|
'INTERSECT,INTO,IS,ISABOUT,JOIN,KEY,KILL,LEFT,LIKE,LINENO,LOAD,' +
|
|
'NATIONAL,NOCHECK,NONCLUSTERED,NOT,NULL,NULLIF,OF,OFF,' +
|
|
'OFFSETS,ON,OPEN,OPENDATASOURCE,OPENQUERY,OPENROWSET,OPENXML,' +
|
|
'OPTION,OR,ORDER,OUTER,OVER,PERCENT,PLAN,PRECISION,' +
|
|
'PRIMARY,PRINT,PROC,PROCEDURE,PUBLIC,RAISERROR,READ,' +
|
|
'READTEXT,RECONFIGURE,REFERENCES,REPLICATION,RESTORE,' +
|
|
'RESTRICT,RETURN,REVOKE,RIGHT,ROLLBACK,ROWCOUNT,ROWGUIDCOL,' +
|
|
'RULE,SAVE,SCHEMA,SELECT,SESSION_USER,SET,SETUSER,SHUTDOWN,' +
|
|
'SOME,STATISTICS,TABLE,TEXTSIZE,THEN,TO,TOP,TRAN,TRANSACTION,' +
|
|
'TRIGGER,TRUNCATE,TSEQUAL,UNION,UNIQUE,UPDATE,UPDATETEXT,' +
|
|
'USE,USER,VALUES,VARYING,VIEW,WAITFOR,WEIGHT,WHEN,WHERE,WHILE,' +
|
|
'WITH,WRITETEXT';
|
|
|
|
// functions
|
|
MSSQL2000Functions =
|
|
'@@CONNECTIONS,@@CPU_BUSY,@@CURSOR_ROWS,@@DATEFIRST,@@DBTS,@@ERROR,' +
|
|
'@@FETCH_STATUS,@@IDENTITY,@@IDLE,@@IO_BUSY,@@LANGID,@@LANGUAGE,' +
|
|
'@@LOCK_TIMEOUT,@@MAX_CONNECTIONS,@@MAX_PRECISION,@@NESTLEVEL,@@OPTIONS,' +
|
|
'@@PACKET_ERRORS,@@PACK_RECEIVED,@@PACK_SENT,@@PROCID,@@REMSERVER,' +
|
|
'@@ROWCOUNT,@@SERVERNAME,@@SERVICENAME,@@SPID,@@TEXTSIZE,@@TIMETICKS,' +
|
|
'@@TOTAL_ERRORS,@@TOTAL_READ,@@TOTAL_WRITE,@@TRANCOUNT,@@VERSION,' +
|
|
'ABS,ACOS,APP_NAME,ASCII,ASIN,ATAN,ATN2,AVG,BINARY_CHECKSUM,CAST,' +
|
|
'CEILING,CHARINDEX,CHECKSUM,CHECKSUM_AGG,COALESCE,COLLATIONPROPERTY,' +
|
|
'COLUMNPROPERTY,COL_LENGTH,COL_NAME,CONVERT,COS,COT,COUNT,' +
|
|
'COUNT_BIG,CURRENT_DATE,CURRENT_TIME,CURRENT_TIMESTAMP,' +
|
|
'CURRENT_USER,CURSOR_STATUS,DATABASEPROPERTY,DATABASEPROPERTYEX,' +
|
|
'DATALENGTH,DATEADD,DATEDIFF,DATENAME,DATEPART,DAY,DB_ID,DB_NAME,DEGREES,' +
|
|
'DIFFERENCE,EXP,FILEGROUPPROPERTY,FILEGROUP_ID,FILEGROUP_NAME,' +
|
|
'FILEPROPERTY,FILE_ID,FILE_NAME,FLOOR,fn_helpcollations,' +
|
|
'fn_listextendedproperty,fn_servershareddrives,fn_trace_geteventinfo,' +
|
|
'fn_trace_getfilterinfo,fn_trace_getinfo,fn_trace_gettable,' +
|
|
'fn_virtualfilestats,FORMATMESSAGE,FULLTEXTCATALOGPROPERTY,' +
|
|
'FULLTEXTSERVICEPROPERTY,GETANSINULL,GETDATE,GETUTCDATE,GROUPING,' +
|
|
'HAS_DBACCESS,HOST_ID,HOST_NAME,IDENT_CURRENT,IDENT_INCR,IDENT_SEED,' +
|
|
'INDEXKEY_PROPERTY,INDEXPROPERTY,INDEX_COL,ISDATE,ISNULL,ISNUMERIC,' +
|
|
'IS_MEMBER,IS_SRVROLEMEMBER,LEN,LOG,LOG10,LOWER,LTRIM,MAX,MIN,MONTH,' +
|
|
'NEWID,OBJECTPROPERTY,OBJECT_ID,OBJECT_NAME,PARSENAME,PATINDEX,' +
|
|
'PERMISSIONS,PI,POWER,QUOTENAME,RADIANS,RAND,REPLACE,REPLICATE,REVERSE,' +
|
|
'ROUND,ROWCOUNT_BIG,RTRIM,SCOPE_IDENTITY,SERVERPROPERTY,SESSIONPROPERTY,' +
|
|
'SIGN,SIN,SOUNDEX,SPACE,SQL_VARIANT_PROPERTY,SQRT,SQUARE,' +
|
|
'STATS_DATE,STDEV,STDEVP,STR,STUFF,SUBSTRING,SUM,SUSER_SID,SUSER_SNAME,' +
|
|
'SYSTEM_USER,TAN,TEXTPTR,TEXTVALID,TYPEPROPERTY,UNICODE,UPPER,' +
|
|
'USER_ID,USER_NAME,VAR,VARP,YEAR';
|
|
|
|
// types
|
|
MSSQL2000Types =
|
|
'bigint,binary,bit,char,character,datetime,' +
|
|
'dec,decimal,float,image,int,' +
|
|
'integer,money,nchar,ntext,nvarchar,real,' +
|
|
'rowversion,smalldatetime,smallint,smallmoney,' +
|
|
'sql_variant,sysname,text,timestamp,tinyint,uniqueidentifier,' +
|
|
'varbinary,varchar';
|
|
|
|
//---MS-SQL---------------------------------------------------------------------
|
|
// keywords
|
|
MSSQLKW =
|
|
'ABSOLUTE,ACTION,ADA,ADD,ALL,ALLOCATE,ALTER,AND,ANY,ARE,AS,ASC,' +
|
|
'ASSERTION,AT,AUTHORIZATION,BACKUP,BEGIN,BETWEEN,BIT_LENGTH,BOTH,' +
|
|
'BREAK,BROWSE,BULK,BY,CASCADE,CASCADED,CASE,CATALOG,CHAR_LENGTH,' +
|
|
'CHARACTER,CHARACTER_LENGTH,CHECK,CHECKPOINT,CLOSE,CLUSTERED,COALESCE,' +
|
|
'COLLATE,COLLATION,COLUMN,COMMIT,COMPUTE,CONNECT,CONNECTION,' +
|
|
'CONSTRAINT,CONSTRAINTS,CONTAINS,CONTINUE,CORRESPONDING,CREATE,CROSS,' +
|
|
'CURRENT,CURRENT_TIME,CURSOR,DATABASE,DBCC,DEALLOCATE,DEC,DECLARE,' +
|
|
'DEFAULT,DEFERRABLE,DEFERRED,DELETE,DENY,DESC,DESCRIBE,DESCRIPTOR,' +
|
|
'DIAGNOSTICS,DISCONNECT,DISK,DISTINCT,DISTRIBUTED,DOMAIN,DOUBLE,DROP,' +
|
|
'DUMP,ELSE,END,ERRLVL,ESCAPE,EXCEPT,EXCEPTION,EXEC,EXECUTE,EXISTS,' +
|
|
'EXIT,EXTERNAL,EXTRACT,FALSE,FETCH,FILE,FILLFACTOR,FIRST,FOR,FOREIGN,' +
|
|
'FORTRAN,FOUND,FREETEXT,FROM,FULL,FUNCTION,GET,GLOBAL,GO,GOTO,GRANT,' +
|
|
'GROUP,HAVING,HOLDLOCK,HOUR,IDENTITY,IDENTITY_INSERT,IDENTITYCOL,IF,' +
|
|
'IMMEDIATE,IN,INCLUDE,INDEX,INDICATOR,INITIALLY,INNER,INPUT,' +
|
|
'INSENSITIVE,INSERT,INTEGER,INTERSECT,INTERVAL,INTO,IS,ISOLATION,JOIN,' +
|
|
'KEY,KILL,LAST,LEADING,LEVEL,LIKE,LINENO,LOAD,LOCAL,MATCH,MERGE,' +
|
|
'MINUTE,MODULE,NAMES,NATIONAL,NATURAL,NEXT,NO,NOCHECK,NONCLUSTERED,' +
|
|
'NONE,NOT,NULL,NULLIF,OCTET_LENGTH,OF,OFF,OFFSETS,ON,ONLY,OPEN,OPTION,' +
|
|
'OR,ORDER,OUTER,OUTPUT,OVER,OVERLAPS,PAD,PARTIAL,PASCAL,PERCENT,PIVOT,' +
|
|
'PLAN,POSITION,PRECISION,PREPARE,PRESERVE,PRIMARY,PRINT,PRIOR,' +
|
|
'PRIVILEGES,PROC,PROCEDURE,PUBLIC,RAISERROR,READ,READTEXT,RECONFIGURE,' +
|
|
'REFERENCES,RELATIVE,REPLICATION,RESTORE,RESTRICT,RETURN,REVERT,' +
|
|
'REVOKE,ROLLBACK,ROWCOUNT,ROWGUIDCOL,ROWS,RULE,SAVE,SCHEMA,SCROLL,' +
|
|
'SECOND,SECTION,SECURITYAUDIT,SELECT,SESSION,SET,SETUSER,SHUTDOWN,' +
|
|
'SIZE,SOME,SQL,SQLCA,SQLCODE,SQLERROR,SQLSTATE,SQLWARNING,STATISTICS,' +
|
|
'TABLE,TABLESAMPLE,TEMPORARY,TEXTSIZE,THEN,TIMEZONE_HOUR,' +
|
|
'TIMEZONE_MINUTE,TO,TOP,TRAILING,TRAN,TRANSACTION,TRANSLATION,TRIGGER,' +
|
|
'TRUE,TRUNCATE,TSEQUAL,UNION,UNIQUE,UNKNOWN,UNPIVOT,UPDATE,UPDATETEXT,' +
|
|
'USAGE,USE,USER,USING,VALUE,VALUES,VARYING,VIEW,WAITFOR,WHEN,WHENEVER,' +
|
|
'WHERE,WHILE,WITH,WORK,WRITE,WRITETEXT,ZONE';
|
|
|
|
// functions
|
|
MSSQLFunctions =
|
|
'@@CONNECTIONS,@@CPU_BUSY,@@CURSOR_ROWS,@@DATEFIRST,@@DBTS,@@ERROR,' +
|
|
'@@FETCH_STATUS,@@IDENTITY,@@IDLE,@@IO_BUSY,@@LANGID,@@LANGUAGE,' +
|
|
'@@LOCK_TIMEOUT,@@MAX_CONNECTIONS,@@MAX_PRECISION,@@NESTLEVEL,' +
|
|
'@@OPTIONS,@@PACK_RECEIVED,@@PACK_SENT,@@PACKET_ERRORS,@@PROCID,' +
|
|
'@@REMSERVER,@@ROWCOUNT,@@SERVERNAME,@@SERVICENAME,@@SPID,@@TEXTSIZE,' +
|
|
'@@TIMETICKS,@@TOTAL_ERRORS,@@TOTAL_READ,@@TOTAL_WRITE,@@TRANCOUNT,' +
|
|
'@@VERSION,ABS,ACOS,APP_NAME,APPLOCK_MODE,APPLOCK_TEST,' +
|
|
'APPROX_COUNT_DISTINCT,ASCII,ASIN,ASSEMBLYPROPERTY,ASYMKEY_ID,' +
|
|
'ASYMKEYPROPERTY,ATAN,ATN2,AVG,BINARY_CHECKSUM,BIT_COUNT,CAST,CEILING,' +
|
|
'CERTENCODED,CERTPRIVATEKEY,CHANGE_TRACKING_CURRENT_VERSION,' +
|
|
'CHANGE_TRACKING_IS_COLUMN_IN_MASK,CHANGE_TRACKING_MIN_VALID_VERSION,' +
|
|
'CHANGETABLE,CHARINDEX,CHECKSUM,CHECKSUM_AGG,CHOOSE,COL_LENGTH,' +
|
|
'COL_NAME,COLLATIONPROPERTY,COLUMNPROPERTY,COLUMNS_UPDATED,COMPRESS,' +
|
|
'CONCAT,CONCAT_WS,CONNECTIONPROPERTY,CONTAINSTABLE,CONTEXT_INFO,' +
|
|
'CONVERT,COS,COT,COUNT,COUNT_BIG,CUME_DIST,CURRENT_DATE,' +
|
|
'CURRENT_REQUEST_ID,CURRENT_TIMESTAMP,CURRENT_TRANSACTION_ID,' +
|
|
'CURRENT_USER,CURSOR_STATUS,DATABASE_PRINCIPAL_ID,DATABASEPROPERTYEX,' +
|
|
'DATALENGTH,DATE_BUCKET,DATEADD,DATEDIFF,DATEDIFF_BIG,DATEFIRST,' +
|
|
'DATEFORMAT,DATEFROMPARTS,DATENAME,DATEPART,DATETIME2FROMPARTS,' +
|
|
'DATETIMEFROMPARTS,DATETIMEOFFSETFROMPARTS,DATETRUNC,DAY,DB_ID,' +
|
|
'DB_NAME,DECOMPRESS,DECRYPTBYASYMKEY,DECRYPTBYCERT,DECRYPTBYKEY,' +
|
|
'DECRYPTBYKEYAUTOASYMKEY,DECRYPTBYKEYAUTOCERT,DECRYPTBYPASSPHRASE,' +
|
|
'DEGREES,DENSE_RANK,DIFFERENCE,EDGE_ID_FROM_PARTS,ENCRYPTBYASYMKEY,' +
|
|
'ENCRYPTBYCERT,ENCRYPTBYKEY,ENCRYPTBYPASSPHRASE,EOMONTH,ERROR_LINE,' +
|
|
'ERROR_MESSAGE,ERROR_NUMBER,ERROR_PROCEDURE,ERROR_SEVERITY,' +
|
|
'ERROR_STATE,EVENTDATA,EXP,FILE_ID,FILE_IDEX,FILE_NAME,FILEGROUP_ID,' +
|
|
'FILEGROUP_NAME,FILEGROUPPROPERTY,FILEPROPERTY,FILETABLEROOTPATH,' +
|
|
'FIRST_VALUE,FLOOR,FN_AVAILABLE_BACKUPS,FN_BACKUP_DB_CONFIG,' +
|
|
'FN_BACKUP_INSTANCE_CONFIG,FN_BUILTIN_PERMISSIONS,' +
|
|
'FN_CDC_DECREMENT_LSN,FN_CDC_GET_COLUMN_ORDINAL,FN_CDC_GET_MAX_LSN,' +
|
|
'FN_CDC_GET_MIN_LSN,FN_CDC_HAS_COLUMN_CHANGED,FN_CDC_INCREMENT_LSN,' +
|
|
'FN_CDC_IS_BIT_SET,FN_CDC_MAP_LSN_TO_TIME,FN_CDC_MAP_TIME_TO_LSN,' +
|
|
'FN_CHECK_OBJECT_SIGNATURES,FN_GET_AUDIT_FILE,' +
|
|
'FN_GET_CURRENT_XEVENT_SETTINGS,FN_GET_HEALTH_STATUS,FN_GET_PARAMETER,' +
|
|
'FN_GET_SQL,FN_HADR_BACKUP_IS_PREFERRED_REPLICA,' +
|
|
'FN_HADR_DISTRIBUTED_AG_DATABASE_REPLICA,' +
|
|
'FN_HADR_DISTRIBUTED_AG_REPLICA,FN_HADR_IS_PRIMARY_REPLICA,' +
|
|
'FN_HELPCOLLATIONS,FN_IS_MASTER_SWITCH_ON,FN_LISTEXTENDEDPROPERTY,' +
|
|
'FN_MY_PERMISSIONS,FN_PAGERESCRACKER,FN_SERVERSHAREDDRIVES,' +
|
|
'FN_SYSCOLLECTOR_GET_EXECUTION_DETAILS,' +
|
|
'FN_SYSCOLLECTOR_GET_EXECUTION_STATS,FN_TRACE_GETDATA,' +
|
|
'FN_TRACE_GETEVENTINFO,FN_TRACE_GETFILTERINFO,FN_TRACE_GETINFO,' +
|
|
'FN_TRACE_GETTABLE,FN_TRANSLATE_PERMISSIONS,FN_VIRTUALFILESERVERMODES,' +
|
|
'FN_VIRTUALFILESTATS,FORMAT,FORMATMESSAGE,FREETEXTTABLE,' +
|
|
'FULLTEXTCATALOGPROPERTY,FULLTEXTSERVICEPROPERTY,GET_BIT,' +
|
|
'GET_FILESTREAM_TRANSACTION_CONTEXT,GETANSINULL,GETDATE,' +
|
|
'GETFILENAMESPACEPATH,GETPATHLOCATOR,GETUTCDATE,GRAPH_ID_FROM_EDGE_ID,' +
|
|
'GRAPH_ID_FROM_NODE_ID,GREATEST,GROUPING,GROUPING_ID,' +
|
|
'HAS_PERMS_BY_NAME,HASHBYTES,HOST_ID,HOST_NAME,IDENT_CURRENT,' +
|
|
'IDENT_INCR,IDENT_SEED,IIF,INDEX_COL,INDEXKEY_PROPERTY,INDEXPROPERTY,' +
|
|
'IS_MEMBER,IS_OBJECTSIGNED,IS_ROLEMEMBER,IS_SRVROLEMEMBER,ISDATE,' +
|
|
'ISJSON,ISNULL,ISNUMERIC,JSON_ARRAY,JSON_ARRAYAGG,JSON_MODIFY,' +
|
|
'JSON_OBJECT,JSON_OBJECTAGG,JSON_PATH_EXISTS,JSON_QUERY,JSON_VALUE,' +
|
|
'KEY_GUID,KEY_ID,KEY_NAME,LAG,LANGUAGE,LAST_VALUE,LEAD,LEAST,LEFT,' +
|
|
'LEFT_SHIFT,LEN,LOG,LOG10,LOGINPROPERTY,LOWER,LTRIM,MAX,MIN,' +
|
|
'MIN_ACTIVE_ROWVERSION,MONTH,NEWID,NEWSEQUENTIALID,NODE_ID_FROM_PARTS,' +
|
|
'NTILE,OBJECT_DEFINITION,OBJECT_ID,OBJECT_ID_FROM_EDGE_ID,' +
|
|
'OBJECT_ID_FROM_NODE_ID,OBJECT_NAME,OBJECT_SCHEMA_NAME,OBJECTPROPERTY,' +
|
|
'OBJECTPROPERTYEX,OPENDATASOURCE,OPENJSON,OPENQUERY,OPENROWSET,' +
|
|
'OPENXML,ORIGINAL_DB_NAME,ORIGINAL_LOGIN,PARSE,PARSENAME,PATHNAME,' +
|
|
'PATINDEX,PERCENT_RANK,PERCENTILE_CONT,PERCENTILE_DISC,PERMISSIONS,PI,' +
|
|
'POWER,PUBLISHINGSERVERNAME,PWDCOMPARE,PWDENCRYPT,QUOTENAME,RADIANS,' +
|
|
'RAND,RANK,REPLACE,REPLICATE,REVERSE,RIGHT,RIGHT_SHIFT,ROUND,' +
|
|
'ROW_NUMBER,ROWCOUNT_BIG,RTRIM,SCHEMA_ID,SCHEMA_NAME,SCOPE_IDENTITY,' +
|
|
'SEMANTICKEYPHRASETABLE,SEMANTICSIMILARITYDETAILSTABLE,' +
|
|
'SEMANTICSIMILARITYTABLE,SERVERPROPERTY,SESSION_CONTEXT,SESSION_ID,' +
|
|
'SESSION_USER,SET_BIT,SIGN,SIGNBYASYMKEY,SIGNBYCERT,SIN,' +
|
|
'SMALLDATETIMEFROMPARTS,SOUNDEX,SP_HELPLANGUAGE,SPACE,' +
|
|
'SQL_VARIANT_PROPERTY,SQRT,SQUARE,STATS_DATE,STDEV,STDEVP,STR,' +
|
|
'STRING_AGG,STRING_ESCAPE,STRING_SPLIT,STUFF,SUBSTRING,SUM,SUSER_ID,' +
|
|
'SUSER_NAME,SUSER_SID,SUSER_SNAME,SWITCHOFFSET,SYMKEYPROPERTY,' +
|
|
'SYSDATETIME,SYSDATETIMEOFFSET,SYSTEM_USER,SYSUTCDATETIME,TAN,' +
|
|
'TERTIARY_WEIGHTS,TEXTPTR,TEXTVALID,TIMEFROMPARTS,TODATETIMEOFFSET,' +
|
|
'TRANSLATE,TRIGGER_NESTLEVEL,TRIM,TRY_CAST,TRY_CONVERT,TRY_PARSE,' +
|
|
'TYPE_ID,TYPE_NAME,TYPEPROPERTY,UNICODE,UPPER,USER_ID,USER_NAME,VAR,' +
|
|
'VARP,VERIFYSIGNEDBYASMKEY,VERIFYSIGNEDBYASYMKEY,VERIFYSIGNEDBYCERT,' +
|
|
'VERIGYSIGNEDBYCERT,VERSION,XACT_STATE,YEAR';
|
|
|
|
// types
|
|
MSSQLTypes =
|
|
'BIGINT,BINARY,BIT,CHAR,DATE,DATETIME,DATETIME2,DATETIMEOFFSET,' +
|
|
'DECIMAL,FLOAT,GEOGRAPHY,GEOMETRY,HIERARCHYID,IMAGE,INT,MONEY,NCHAR,' +
|
|
'NTEXT,NUMERIC,NVARCHAR,REAL,SMALLDATETIME,SMALLINT,SMALLMONEY,' +
|
|
'SQL_VARIANT,SYSNAME,TEXT,TIME,TIMESTAMP,TINYINT,UNIQUEIDENTIFIER,' +
|
|
'VARBINARY,VARCHAR,XML';
|
|
|
|
//---Interbase 6----------------------------------------------------------------
|
|
// functions
|
|
Interbase6Functions = 'AVG,CAST,COUNT,GEN_ID,MAX,MIN,SUM,UPPER';
|
|
|
|
// keywords
|
|
Interbase6KW: string = 'ACTIVE,ADD,AFTER,ALL,ALTER,AND,ANY,AS,ASC,' +
|
|
'ASCENDING,AT,AUTO,AUTODDL,BASED,BASENAME,BASE_NAME,BEFORE,BEGIN,BETWEEN,' +
|
|
'BLOBEDIT,BUFFER,BY,CACHE,CHARACTER_LENGTH,CHAR_LENGTH,CHECK,' +
|
|
'CHECK_POINT_LEN,CHECK_POINT_LENGTH,COLLATE,COLLATION,COLUMN,COMMIT,' +
|
|
'COMMITED,COMPILETIME,COMPUTED,CLOSE,CONDITIONAL,CONNECT,CONSTRAINT,' +
|
|
'CONTAINING,CONTINUE,CREATE,CURRENT,CURRENT_DATE,CURRENT_TIME,' +
|
|
'CURRENT_TIMESTAMP,CURSOR,DATABASE,DAY,DB_KEY,DEBUG,DEC,DECLARE,DEFAULT,' +
|
|
'DELETE,DESC,DESCENDING,DESCRIBE,DESCRIPTOR,DISCONNECT,DISTINCT,DO,' +
|
|
'DOMAIN,DROP,ECHO,EDIT,ELSE,END,ENTRY_POINT,ESCAPE,EVENT,EXCEPTION,' +
|
|
'EXECUTE,EXISTS,EXIT,EXTERN,EXTERNAL,EXTRACT,FETCH,FILE,FILTER,FOR,' +
|
|
'FOREIGN,FOUND,FROM,FULL,FUNCTION,GDSCODE,GENERATOR,GLOBAL,GOTO,GRANT,' +
|
|
'GROUP,GROUP_COMMIT_WAIT,GROUP_COMMIT_WAIT_TIME,HAVING,HELP,HOUR,IF,' +
|
|
'IMMEDIATE,IN,INACTIVE,INDEX,INDICATOR,INIT,INNER,INPUT,INPUT_TYPE,' +
|
|
'INSERT,INT,INTO,IS,ISOLATION,ISQL,JOIN,KEY,LC_MESSAGES,LC_TYPE,LEFT,' +
|
|
'LENGTH,LEV,LEVEL,LIKE,LOGFILE,LOG_BUFFER_SIZE,LOG_BUF_SIZE,LONG,MANUAL,' +
|
|
'MAXIMUM,MAXIMUM_SEGMENT,MAX_SEGMENT,MERGE,MESSAGE,MINIMUM,MINUTE,' +
|
|
'MODULE_NAME,MONTH,NAMES,NATIONAL,NATURAL,NCHAR,NO,NOAUTO,NOT,NULL,' +
|
|
'NUM_LOG_BUFFS,NUM_LOG_BUFFERS,OCTET_LENGTH,OF,ON,ONLY,OPEN,OPTION,OR,' +
|
|
'ORDER,OUTER,OUTPUT,OUTPUT_TYPE,OVERFLOW,PAGE,PAGELENGTH,PAGES,PAGE_SIZE,' +
|
|
'PARAMETER,PASSWORD,PLAN,POSITION,POST_EVENT,PRECISION,PREPARE,PROCEDURE,' +
|
|
'PROTECTED,PRIMARY,PRIVILEGES,PUBLIC,QUIT,RAW_PARTITIONS,READ,REAL,' +
|
|
'RECORD_VERSION,REFERENCES,RELEASE,RESERV,RESERVING,RETAIN,RETURN,' +
|
|
'RETURNING_VALUES,RETURNS,REVOKE,RIGHT,ROLLBACK,RUNTIME,SCHEMA,SECOND,' +
|
|
'SEGMENT,SELECT,SET,SHADOW,SHARED,SHELL,SHOW,SINGULAR,SIZE,SNAPSHOT,SOME,' +
|
|
'SORT,SQL,SQLCODE,SQLERROR,SQLWARNING,STABILITY,STARTING,STARTS,' +
|
|
'STATEMENT,STATIC,STATISTICS,SUB_TYPE,SUSPEND,TABLE,TERMINATOR,THEN,TO,' +
|
|
'TRANSACTION,TRANSLATE,TRANSLATION,TRIGGER,TRIM,TYPE,UNCOMMITTED,UNION,' +
|
|
'UNIQUE,UPDATE,USER,USING,VALUE,VALUES,VARIABLE,VARYING,VERSION,VIEW,' +
|
|
'WAIT,WEEKDAY,WHEN,WHENEVER,WHERE,WHILE,WITH,WORK,WRITE,YEAR,YEARDAY';
|
|
|
|
// types
|
|
Interbase6Types = 'BLOB,CHAR,CHARACTER,DATE,DECIMAL,DOUBLE,FLOAT,INTEGER,' +
|
|
'NUMERIC,SMALLINT,TIME,TIMESTAMP,VARCHAR';
|
|
|
|
//---MySQL----------------------------------------------------------------------
|
|
// keywords
|
|
MySqlKW: string = 'ACTION,AFTER,AGAINST,AGGREGATE,ALL,ALTER,ANALYZE,AND,AS,' +
|
|
'ASC,AUTO_INCREMENT,AVG_ROW_LENGTH,BACKUP,BEGIN,BENCHMARK,BETWEEN,BINARY,' +
|
|
'BIT,BOOL,BOTH,BY,CASCADE,CHANGE,CHARACTER,CHECK,CHECKSUM,COLLATE,COLUMN,COLUMNS,' +
|
|
'COMMENT,COMMIT,CONSTRAINT,CREATE,CROSS,DATA,DATABASES,DEC,DEFAULT,' +
|
|
'DELAYED,DELAY_KEY_WRITE,DELETE,DESC,DESCRIBE,DISTINCT,DISTINCTROW,DROP,' +
|
|
'ELSE,ENCLOSED,END,ESCAPE,ESCAPED,EXISTS,EXPLAIN,FIELDS,FILE,FIRST,' +
|
|
'FLOAT4,FLOAT8,FLUSH,FOR,FOREIGN,FROM,FULL,FULLTEXT,FUNCTION,GLOBAL,GRANT,' +
|
|
'GRANTS,GROUP,HAVING,HEAP,HIGH_PRIORITY,HOSTS,IDENTIFIED,IGNORE,' +
|
|
'INDEX,INFILE,INNER,INT1,INT2,INT3,INT4,INT8,INTO,IS,ISAM,JOIN,KEY,' +
|
|
'KEYS,KILL,LEADING,LIKE,LIMIT,LINES,LOAD,LOCAL,LOCK,LOGS,LONG,' +
|
|
'LOW_PRIORITY,MATCH,MAX_ROWS,MIDDLEINT,MIN_ROWS,MODIFY,MYISAM,' +
|
|
'NATURAL,NO,NOT,NULL,OPTIMIZE,OPTION,OPTIONALLY,ON,OPEN,OR,ORDER,OUTER,' +
|
|
'OUTFILE,PACK_KEYS,PARTIAL,PRECISION,PRIMARY,PRIVILEGES,PROCEDURE,' +
|
|
'PROCESS,PROCESSLIST,READ,REFERENCES,REGEXP,RELOAD,RENAME,REPAIR,' +
|
|
'RESTRICT,RESTORE,RETURN,RETURNS,REVOKE,RLIKE,ROLLBACK,ROW,ROWS,SELECT,SHOW,' +
|
|
'SHUTDOWN,SONAME,SQL_BIG_RESULT,SQL_BIG_SELECTS,SQL_BIG_TABLES,' +
|
|
'SQL_LOG_OFF,SQL_LOG_UPDATE,SQL_LOW_PRIORITY_UPDATES,SQL_SELECT_LIMIT,' +
|
|
'SQL_SMALL_RESULT,SQL_WARNINGS,STARTING,STATUS,STRAIGHT_JOIN,TABLE,' +
|
|
'TABLES,TEMPORARY,TERMINATED,THEN,TO,TRAILING,TRANSACTION,TYPE,UNION,UNIQUE,' +
|
|
'UNLOCK,UNSIGNED,UPDATE,USAGE,USE,USING,VALUES,VARBINARY,VARCHAR,' +
|
|
'VARIABLES,VARYING,VIEW,WHERE,WITH,WRITE,ZEROFILL';
|
|
|
|
// types
|
|
MySqlTypes: string = 'TINYINT,SMALLINT,MEDIUMINT,INT,INTEGER,BIGINT,FLOAT,' +
|
|
'DOUBLE,REAL,DECIMAL,NUMERIC,DATE,DATETIME,TIMESTAMP,TIME,YEAR,CHAR,' +
|
|
'NATIONAL,TINYBLOB,TINYTEXT,TEXT,BLOB,MEDIUMBLOB,MEDIUMTEXT,LONGBLOB,' +
|
|
'LONGTEXT,ENUM,SET,STRING';
|
|
|
|
// functions
|
|
MySqlFunctions: string = 'ABS,ACOS,ASCII,ADD,ADDDATE,ASIN,ATAN,ATAN2,AVG,' +
|
|
'BIN,BIT_AND,BIT_COUNT,BIT_OR,CASE,CHARACTER_LENGTH,CEILING,' +
|
|
'CONNECTION_ID,CHAR_LENGTH,COALESCE,CONCAT,CONV,COS,COT,COUNT,' +
|
|
'CURDATE,CURRENT_DATE,CURRENT_TIME,CURRENT_TIMESTAMP,CURTIME,DATABASE,' +
|
|
'DATE_ADD,DATE_FORMAT,DATE_SUB,DAY,DAYNAME,DAYOFMONTH,DAYOFWEEK,' +
|
|
'DAYOFYEAR,DAY_HOUR,DAY_MINUTE,DAY_SECOND,DECODE,DEGREES,ELT,ENCODE,' +
|
|
'ENCRYPT,EXP,EXPORT_SET,FIELD,FIND_IN_SET,FLOOR,FORMAT,FROM_DAYS,' +
|
|
'FROM_UNIXTIME,GET_LOCK,GREATEST,GROUP_CONCAT,HEX,HOUR,HOUR_MINUTE,HOUR_SECOND,IF,' +
|
|
'IFNULL,IN,INET_NTOA,INET_ATON,INSERT,INSERT_ID,INSTR,INTERVAL,ISNULL,' +
|
|
'LAST_INSERT_ID,LCASE,LEAST,LEFT,LENGTH,LOAD_FILE,LOCATE,LOG,LOG10,LOWER,' +
|
|
'LPAD,LTRIM,MAKE_SET,MASTER_POS_WAIT,MAX,MD5,MID,MIN,MINUTE,' +
|
|
'MINUTE_SECOND,MOD,MONTH,MONTHNAME,NOW,NULLIF,OCT,OCTET_LENGTH,ORD,' +
|
|
'PASSWORD,PERIOD_ADD,PERIOD_DIFF,PI,POSITION,POW,POWER,QUARTER,RADIANS,' +
|
|
'RAND,REGEXP_REPLACE,RELEASE_LOCK,REPEAT,REPLACE,REVERSE,RIGHT,ROUND,RPAD,RTRIM,SECOND,' +
|
|
'SEC_TO_TIME,SESSION_USER,SIGN,SIN,SOUNDEX,SPACE,SQRT,STD,STDDEV,STRCMP,' +
|
|
'SUBDATE,SUBSTRING,SUBSTRING_INDEX,SUM,SYSDATE,SYSTEM_USER,TAN,' +
|
|
'TIME_FORMAT,TIME_TO_SEC,TO_DAYS,TRIM,TRUNCATE,UCASE,UNIX_TIMESTAMP,' +
|
|
'UPPER,USER,VERSION,WEEK,WEEKDAY,WHEN,YEARWEEK,YEAR_MONTH';
|
|
|
|
{begin} // JJV 2000-11-16
|
|
//---Ingres---------------------------------------------------------------------
|
|
// keywords
|
|
IngresKW: string =
|
|
'ABORT,ACTIVATE,ADD,ADDFORM,AFTER,AGGREGATE,ALL,ALTER,AND,APPEND,ARRAY,' +
|
|
'AS,ASC,AT,AUDIT_LOG,AUTHORIZATION,AUTOCOMMIT,AVGU,BEFORE,BEGIN,BETWEEN,' +
|
|
'BREAKDISPLAY,BY,BYREF,CACHE,CALL,CALLFRAME,CALLPROC,CASCADE,CHECK,CLEAR,' +
|
|
'CLEARROW,CLOSE,COLUMN,COMMAND,COMMENT,COMMIT,CONNECT,CONSTRAINT,' +
|
|
'CONTINUE,COPY,COUNTU,CPUFACTOR,CREATE,CURRENT,CURRENT_USER,CURSOR,DATA,' +
|
|
'DATAHANDLER,DATE_FORMAT,DBEVENT,DDL_CONCURRENCY,DEADLOCK,DECLARE,' +
|
|
'DEFAULT,DEFERRED,DEFINE,DELETE,DELETEROW,DESC,DESCRIBE,DESCRIPTOR,' +
|
|
'DESTROY,DIRECT,DISABLE,DISCONNECT,DISPLAY,DISTINCT,DISTRIBUTE,DO,DOWN,' +
|
|
'DROP,ELSE,ELSEIF,ENABLE,END,ENDDATA,ENDDISPLAY,ENDFORMS,ENDIF,ENDLOOP,' +
|
|
'ENDRETRIEVE,ENDSELECT,ENDWHILE,ERROR,ESCAPE,EXCLUDE,EXCLUDING,EXEC,' +
|
|
'EXECUTE,EXISTS,EXIT,FETCH,FIELD,FINALIZE,FOR,FOREIGN,FORMDATA,FORMINIT,' +
|
|
'FORMS,FROM,FULL,GET,GETFORM,GETOPER,GETROW,GLOBAL,GOTO,GRANT,GRANTED,' +
|
|
'HAVING,HELP,HELP_FORMS,HELP_FRS,HELPFILE,IDENTIFIED,IF,IIMESSAGE,' +
|
|
'IIPRINTF,IIPROMPT,IISTATEMENT,IMMEDIATE,IMPORT,IN,INCLUDE,INDEX,' +
|
|
'INDICATOR,INGRES,INITIALIZE,INITTABLE,INNER,INQUIRE_EQUEL,INQUIRE_FORMS,' +
|
|
'INQUIRE_FRS,INQUIRE_INGRES,INSERT,INSERTROW,INSTALLATION,INTEGRITY,INTO,' +
|
|
'IO_TRACE,IS,J_FREESZ1,J_FREESZ2,J_FREESZ3,J_FREESZ4,J_SORTBUFSZ,' +
|
|
'JCPUFACTOR,JOIN,JOINOP,JOURNALING,KEY,LEVEL,LIKE,LINK,LOADTABLE,LOCAL,' +
|
|
'LOCATION,LOCK_TRACE,LOG_TRACE,LOGDBEVENTS,LOGGING,MAXCOST,MAXCPU,' +
|
|
'MAXPAGE,MENUITEM,MESSAGE,MODE,MODIFY,MODULE,MONEY_FORMAT,MONEY_PREC,' +
|
|
'MOVE,NATURAL,NEXT,NODEADLOCK,NOECHO,NOIO_TRACE,NOJIONOP,NOJOURNALING,' +
|
|
'NOLOCK_TRACE,NOLOG_TRACE,NOLOGDBEVENTS,NOLOGGING,NOMAXCOST,NOMAXCPU,' +
|
|
'NOMAXIO,NOMAXPAGE,NOMAXQUERY,NOMAXROW,NOOPTIMIZEONLY,NOPRINTDBEVENTS,' +
|
|
'NOPRINTQRY,NOPRINTRULES,NOQEP,NORULES,NOSQL,NOSTATISTICS,NOT,NOTRACE,' +
|
|
'NULL,OF,ON,ONLY,OPEN,OPTIMIZEONLY,OPTION,OR,ORDER,OUT,PARAM,PERMIT,' +
|
|
'PREPARE,PRESERVE,PRIMARY,PRINT,PRINTDBEVENTS,PRINTQRY,PRINTSCREEN,' +
|
|
'PRIVILEGES,PROCEDURE,PROMPT,PUBLIC,PUT,PUTFORM,PUTOPER,PUTROW,QBUFSIZE,' +
|
|
'QEP,QRY,QUALIFICATION,QUERY_SIZE,RAISE,RANGE,READONLY,REDISPLAY,' +
|
|
'REFERENCES,REFERENCING,REGISTER,RELOCATE,REMOVE,RENAME,REPEAT,REPEATED,' +
|
|
'REPLACE,REPLICATE,RESTRICT,RESULT_STRUCTURE,RESUME,RET_INTO,RETRIEVE,' +
|
|
'RETURN,RETURNING,REVOKE,ROLLBACK,ROWS,RULE,RUN,SAVE,SAVEPOINT,SCHEMA,' +
|
|
'SCREEN,SCROLL,SCROLLDOWN,SCROLLUP,SECTION,SECURITY_ALARM,SECURITY_AUDIT,' +
|
|
'SELECT,SESSION,SET,SET_4GL,SET_EQUAL,SET_FORMS,SET_FRS,SET_INGRES,' +
|
|
'SET_SQL,SHORT_REMARK,SLEEP,SOME,SORT,SORTBUFSIZE,SQL,STATISTICS,STOP,' +
|
|
'SUBMENU,SUMU,SYNONYM,SYSTEM,TABLE,TABLEDATA,TEWMPORARY,THEN,TO,TRACE,' +
|
|
'TRANSACTION,TYPE,UNION,UNIQUE,UNLOADTABLE,UNTIL,UP,UPDATE,USER,USING,' +
|
|
'VALIDATE,VALIDROW,VALUES,VIEW,WHEN,WHENEVER,WHERE,WHILE,WITH,WORK';
|
|
|
|
// types
|
|
IngresTypes: string =
|
|
'BYTE,C,CHAR,CHARACTER,DATE,DECIMAL,FLOAT,FLOAT4,FLOAT8,INTEGER,INTEGER1,' +
|
|
'INTEGER2,INTEGER4,LONG,MONEY,OBJECT_KEY,SECURITY_LABEL,SHORT,SMALLINT,' +
|
|
'TABLE_KEY,TEXT,VARCHAR,VARYING';
|
|
|
|
// functions
|
|
IngresFunctions: string =
|
|
'_BINTIM,_CPU_MS,_DATE,_DIO_CNT,_ET_SEC,_PFAULT_CNT,_TIME,_VERSION,ABS,' +
|
|
'ANY,ATAN,AUTOCOMMIT_STATE,AVG,BIOCNT,CHAREXTRACT,COLLATION,CONCAT,' +
|
|
'CONNECT_TIME_LIMIT,COS,COUNT,CREATE_PROCEDURE,CREATE_TABLE,DATABASE,' +
|
|
'DATE_GMT,DATE_PART,DATE_TRUNC,DB_ADMIN,DB_DELIMITED_CASE,DB_NAME_CASE,' +
|
|
'DBA,DBMS_BIO,DBMS_CPU,DBMS_DIO,DBMSINFO,DOW,EXP,FLATTEN_AGGREGATE,' +
|
|
'FLATTEN_NONE,FLATTEN_OPTIMIZE,FLATTEN_SINGLETON,GROUP,HEX,' +
|
|
'IDLE_TIME_LIMIT,IFNULL,INITIAL_USER,INQUIRE_SQL,INT1,INT2,INT4,INTERVAL,' +
|
|
'LANGUAGE,LEFT,LENGTH,LOCATE,LOCKMODE,LOG,LONG_BYTE,LONG_VARCHAR,' +
|
|
'LOWERCASE,MAX,MAXCONNECT,MAXIDLE,MAXIO,MAXQUERY,MAXROW,MIN,MOD,NOTRIM,' +
|
|
'ON_ERROR_STATE,PAD,QUERY_IO_LIMIT,QUERY_LANGUAGE,QUERY_ROW_LIMIT,RIGHT,' +
|
|
'ROLE,SECURITY_AUDIT_LOG,SECURITY_AUDIT_STATE,SECURITY_PRIV,' +
|
|
'SELECT_SYSCAT,SERVER_CLASS,SESSION_ID,SESSION_PRIORITY,' +
|
|
'SESSION_PRIORITY_LIMIT,SESSION_PRIV,SESSION_SECLABEL,SESSION_USER,SHIFT,' +
|
|
'SIN,SIZE,SQRT,SQUEEZE,SUM,SYSTEM_USER,TABLE_STATISTICS,TERMINAL,' +
|
|
'TRANSACTION_STATE,TRIM,UPDATE_ROWCNT,UPDATE_SYSCAT,UPPERCASE,USERNAME,' +
|
|
'VARBYTE';
|
|
{end} // JJV 2000-11-16
|
|
|
|
//---Firebird 2.5 keywords------------------------------------------------------
|
|
Firebird25KW: string =
|
|
'ABS,ACCENT,ACOS,ACTION,ACTIVE,ADD,ADMIN,AFTER,ALL,ALTER,ALWAYS,AND,ANY,'+
|
|
'AS,ASC,ASCENDING,ASCII_CHAR,ASCII_VAL,ASIN,AT,ATAN,ATAN2,AUTO,AUTONOMOUS,'+
|
|
'AVG,BACKUP,BEFORE,BEGIN,BETWEEN,BIGINT,BIN_AND,BIN_NOT,BIN_OR,BIN_SHL,'+
|
|
'BIN_SHR,BIN_XOR,BIT_LENGTH,BLOB,BLOCK,BOTH,BREAK,BY,CALLER,CASCADE,CASE,'+
|
|
'CAST,CEIL,CEILING,CHAR,CHAR_LENGTH,CHAR_TO_UUID,CHARACTER,CHARACTER_LENGTH,'+
|
|
'CHECK,CLOSE,COALESCE,COLLATE,COLLATION,COLUMN,COMMENT,COMMIT,COMMITTED,'+
|
|
'COMMON,COMPUTED,CONDITIONAL,CONNECT,CONSTRAINT,CONTAINING,COS,COSH,COT,'+
|
|
'COUNT,CREATE,CROSS,CSTRING,CURRENT,CURRENT_CONNECTION,CURRENT_DATE,'+
|
|
'CURRENT_ROLE,CURRENT_TIME,CURRENT_TIMESTAMP,CURRENT_TRANSACTION,'+
|
|
'CURRENT_USER,CURSOR,DATABASE,DATA,DATE,DATEADD,DATEDIFF,DAY,DEC,DECIMAL,'+
|
|
'DECLARE,DECODE,DEFAULT,DELETE,DELETING,DESC,DESCENDING,DESCRIPTOR,'+
|
|
'DIFFERENCE,DISCONNECT,DISTINCT,DO,DOMAIN,DOUBLE,DROP,ELSE,END,ENTRY_POINT,'+
|
|
'ESCAPE,EXCEPTION,EXECUTE,EXISTS,EXIT,EXP,EXTERNAL,EXTRACT,FETCH,FILE,'+
|
|
'FILTER,FIRST,FIRSTNAME,FLOAT,FLOOR,FOR,FOREIGN,FREE_IT,FROM,FULL,FUNCTION,'+
|
|
'GDSCODE,GENERATED,GENERATOR,GEN_ID,GEN_UUID,GLOBAL,GRANT,GRANTED,GROUP,'+
|
|
'HASH,HAVING,HOUR,IF,IGNORE,IIF,IN,INACTIVE,INDEX,INNER,INPUT_TYPE,'+
|
|
'INSENSITIVE,INSERT,INSERTING,INT,INTEGER,INTO,IS,ISOLATION,JOIN,KEY,LAST,'+
|
|
'LASTNAME,LEADING,LEAVE,LEFT,LENGTH,LEVEL,LIKE,LIMBO,LIST,LN,LOCALTIME,'+
|
|
'LOCALTIMESTAMP,LOCK,LOG,LOG10,LONG,LOWER,LPAD,MANUAL,MAPPING,MATCHED,'+
|
|
'MATCHING,MAX,MAXVALUE,MAXIMUM_SEGMENT,MERGE,MILLISECOND,MIDDLENAME,MIN,'+
|
|
'MINUTE,MINVALUE,MOD,MODULE_NAME,MONTH,NAMES,NATIONAL,NATURAL,NCHAR,NEXT,'+
|
|
'NO,NOT,NULLIF,NULL,NULLS,NUMERIC,OCTET_LENGTH,OF,ON,ONLY,OPEN,OPTION,OR,'+
|
|
'ORDER,OS_NAME,OUTER,OUTPUT_TYPE,OVERFLOW,OVERLAY,PAD,PAGE,PAGES,PAGE_SIZE,'+
|
|
'PARAMETER,PASSWORD,PI,PLACING,PLAN,POSITION,POST_EVENT,POWER,PRECISION,'+
|
|
'PRESERVE,PRIMARY,PRIVILEGES,PROCEDURE,PROTECTED,RAND,RDB$DB_KEY,READ,REAL,'+
|
|
'RECORD_VERSION,RECREATE,RECURSIVE,REFERENCES,RELEASE,REPLACE,REQUESTS,'+
|
|
'RESERV,RESERVING,RESTART,RESTRICT,RETAIN,RETURNING,RETURNING_VALUES,'+
|
|
'RETURNS,REVERSE,REVOKE,RIGHT,ROLE,ROLLBACK,ROUND,ROW_COUNT,ROWS,RPAD,'+
|
|
'SAVEPOINT,SCALAR_ARRAY,SCHEMA,SECOND,SEGMENT,SELECT,SENSITIVE,SEQUENCE,'+
|
|
'SET,SHADOW,SHARED,SIGN,SIMILAR,SIN,SINGULAR,SINH,SIZE,SKIP,SMALLINT,'+
|
|
'SNAPSHOT,SOME,SORT,SOURCE,SPACE,SQLCODE,SQLSTATE,SQRT,STABILITY,START,'+
|
|
'STARTING,STARTS,STATEMENT,STATISTICS,SUBSTRING,SUB_TYPE,SUM,SUSPEND,TABLE,'+
|
|
'TAN,TANH,TEMPORARY,THEN,TIME,TIMESTAMP,TIMEOUT,TO,TRAILING,TRANSACTION,'+
|
|
'TRIGGER,TRIM,TRUNC,TWO_PHASE,TYPE,UNCOMMITTED,UNDO,UNION,UNIQUE,UPDATE,'+
|
|
'UPDATING,UPPER,USER,USING,UUID_TO_CHAR,VALUE,VALUES,VARCHAR,VARIABLE,'+
|
|
'VARYING,VIEW,WAIT,WEEK,WEEKDAY,WHEN,WHERE,WHILE,WITH,WORK,WRITE,YEAR,YEARDAY';
|
|
|
|
//---Firebird 3.0 keywords------------------------------------------------------
|
|
Firebird30KW: string =
|
|
'ABS,ABSOLUTE,ACCENT,ACOS,ACOSH,ACTION,ACTIVE,ADD,ADMIN,AFTER,ALL,ALTER,'+
|
|
'ALWAYS,AND,ANY,AS,ASC,ASCENDING,ASCII_CHAR,ASCII_VAL,ASIN,ASINH,AT,ATAN,'+
|
|
'ATAN2,ATANH,AUTO,AUTONOMOUS,AVG,BACKUP,BEFORE,BEGIN,BETWEEN,BIGINT,BIN_AND,'+
|
|
'BIN_NOT,BIN_OR,BIN_SHL,BIN_SHR,BIN_XOR,BIT_LENGTH,BLOB,BLOCK,BODY,BOOLEAN,'+
|
|
'BOTH,BREAK,BY,CALLER,CASCADE,CASE,CAST,CEIL,CEILING,CHAR,CHAR_LENGTH,'+
|
|
'CHAR_TO_UUID,CHARACTER,CHARACTER_LENGTH,CHECK,CLOSE,COALESCE,COLLATE,'+
|
|
'COLLATION,COLUMN,COMMENT,COMMIT,COMMITTED,COMMON,COMPUTED,CONDITIONAL,'+
|
|
'CONNECT,CONSTRAINT,CONTAINING,CONTINUE,CORR,COS,COSH,COT,COUNT,COVAR_POP,'+
|
|
'COVAR_SAMP,CREATE,CROSS,CSTRING,CURRENT,CURRENT_CONNECTION,CURRENT_DATE,'+
|
|
'CURRENT_ROLE,CURRENT_TIME,CURRENT_TIMESTAMP,CURRENT_TRANSACTION,'+
|
|
'CURRENT_USER,CURSOR,DATABASE,DATA,DATE,DATEADD,DATEDIFF,DAY,DDL,DEC,'+
|
|
'DECIMAL,DECLARE,DECODE,DECRYPT,DEFAULT,DELETE,DELETING,DENSE_RANK,DESC,'+
|
|
'DESCENDING,DESCRIPTOR,DETERMINISTIC,DIFFERENCE,DISCONNECT,DISTINCT,DO,'+
|
|
'DOMAIN,DOUBLE,DROP,ELSE,ENCRYPT,END,ENGINE,ENTRY_POINT,ESCAPE,EXCEPTION,'+
|
|
'EXECUTE,EXISTS,EXIT,EXP,EXTERNAL,EXTRACT,FALSE,FETCH,FILE,FILTER,FIRST,'+
|
|
'FIRST_VALUE,FIRSTNAME,FLOAT,FLOOR,FOR,FOREIGN,FREE_IT,FROM,FULL,FUNCTION,'+
|
|
'GDSCODE,GENERATED,GENERATOR,GEN_ID,GEN_UUID,GLOBAL,GRANT,GRANTED,GROUP,'+
|
|
'HASH,HAVING,HOUR,IDENTITY,IF,IGNORE,IIF,IN,INACTIVE,INCREMENT,INDEX,INNER,'+
|
|
'INPUT_TYPE,INSENSITIVE,INSERT,INSERTING,INT,INTEGER,INTO,IS,ISOLATION,JOIN,'+
|
|
'KEY,LAG,LAST,LAST_VALUE,LASTNAME,LEAD,LEADING,LEAVE,LEFT,LENGTH,LEVEL,LIKE,'+
|
|
'LIMBO,LINGER,LIST,LN,LOCALTIME,LOCALTIMESTAMP,LOCK,LOG,LOG10,LONG,LOWER,'+
|
|
'LPAD,MANUAL,MAPPING,MATCHED,MATCHING,MAX,MAXVALUE,MERGE,MILLISECOND,'+
|
|
'MIDDLENAME,MIN,MINUTE,MINVALUE,MOD,MODULE_NAME,MONTH,NAME,NAMES,NATIONAL,'+
|
|
'NATURAL,NCHAR,NEXT,NO,NOT,NTH_VALUE,NULLIF,NULL,NULLS,NUMERIC,OCTET_LENGTH,'+
|
|
'OF,OFFSET,ON,ONLY,OPEN,OPTION,OR,ORDER,OS_NAME,OUTER,OUTPUT_TYPE,OVER,'+
|
|
'OVERFLOW,OVERLAY,PACKAGE,PAD,PAGE,PAGES,PAGE_SIZE,PARAMETER,PARTITION,'+
|
|
'PASSWORD,PI,PLACING,PLAN,PLUGIN,POSITION,POST_EVENT,POWER,PRECISION,'+
|
|
'PRESERVE,PRIMARY,PRIOR,PRIVILEGES,PROCEDURE,PROTECTED,RAND,RANK,RDB$DB_KEY,'+
|
|
'RDB$GET_CONTEXT,RDB$RECORD_VERSION,RDB$SET_CONTEXT,READ,REAL,'+
|
|
'RECORD_VERSION,RECREATE,RECURSIVE,REFERENCES,REGR_AVGX,REGR_AVGY,'+
|
|
'REGR_COUNT,REGR_INTERCEPT,REGR_R2,REGR_SLOPE,REGR_SXX,REGR_SXY,REGR_SYY,'+
|
|
'RELATIVE,RELEASE,REPLACE,REQUESTS,RESERV,RESERVING,RESTART,RESTRICT,RETAIN,'+
|
|
'RETURN,RETURNING,RETURNING_VALUES,RETURNS,REVERSE,REVOKE,RIGHT,ROLE,'+
|
|
'ROLLBACK,ROUND,ROW,ROW_COUNT,ROW_NUMBER,ROWS,RPAD,SAVEPOINT,SCALAR_ARRAY,'+
|
|
'SCHEMA,SCROLL,SECOND,SEGMENT,SELECT,SENSITIVE,SEQUENCE,SERVERWIDE,SET,'+
|
|
'SHADOW,SHARED,SIGN,SIMILAR,SIN,SINGULAR,SINH,SIZE,SKIP,SMALLINT,SNAPSHOT,'+
|
|
'SOME,SORT,SOURCE,SPACE,SQLCODE,SQLSTATE,SQRT,STABILITY,START,STARTING,'+
|
|
'STARTS,STATEMENT,STATISTICS,STDDEV_POP,STDDEV_SAMP,SUBSTRING,SUB_TYPE,SUM,'+
|
|
'SUSPEND,TABLE,TAGS,TAN,TANH,TEMPORARY,THEN,TIME,TIMESTAMP,TIMEOUT,TO,'+
|
|
'TRAILING,TRANSACTION,TRIGGER,TRIM,TRUE,TRUNC,TRUSTED,TWO_PHASE,TYPE,'+
|
|
'UNCOMMITTED,UNDO,UNION,UNIQUE,UNKNOWN,UPDATE,UPDATING,UPPER,USAGE,USER,'+
|
|
'USING,UUID_TO_CHAR,VALUE,VALUES,VAR_POP,VAR_SAMP,VARCHAR,VARIABLE,VARYING,'+
|
|
'VIEW,WAIT,WEEK,WEEKDAY,WHEN,WHERE,WHILE,WITH,WORK,WRITE,YEAR,YEARDAY';
|
|
|
|
//---Firebird 4.0 keywords------------------------------------------------------
|
|
Firebird40KW: string =
|
|
'ABS,ABSOLUTE,ACCENT,ACOS,ACOSH,ACTION,ACTIVE,ADD,ADMIN,AFTER,ALL,ALTER,'+
|
|
'ALWAYS,AND,ANY,AS,ASC,ASCENDING,ASCII_CHAR,ASCII_VAL,ASIN,ASINH,AT,ATAN,'+
|
|
'ATAN2,ATANH,AUTO,AUTONOMOUS,AVG,BACKUP,BASE64_DECODE,BASE64_ENCODE,BEFORE,'+
|
|
'BEGIN,BETWEEN,BIGINT,BIN_AND,BIN_NOT,BIN_OR,BIN_SHL,BIN_SHR,BIN_XOR,BINARY,'+
|
|
'BIND,BIT_LENGTH,BLOB,BLOCK,BODY,BOOLEAN,BOTH,BREAK,BY,CALLER,CASCADE,CASE,'+
|
|
'CAST,CEIL,CEILING,CHAR,CHAR_LENGTH,CHAR_TO_UUID,CHARACTER,CHARACTER_LENGTH,'+
|
|
'CHECK,CLEAR,CLOSE,COALESCE,COLLATE,COLLATION,COLUMN,COMMENT,COMMIT,'+
|
|
'COMMITTED,COMMON,COMPARE_DECFLOAT,COMPUTED,CONDITIONAL,CONNECT,CONNECTIONS,'+
|
|
'CONSISTENCY,CONSTRAINT,CONTAINING,CONTINUE,CORR,COS,COSH,COT,COUNT,COUNTER,'+
|
|
'COVAR_POP,COVAR_SAMP,CREATE,CROSS,CRYPT_HASH,CSTRING,CTR_BIG_ENDIAN,'+
|
|
'CTR_LENGTH,CTR_LITTLE_ENDIAN,CUME_DIST,CURRENT,CURRENT_CONNECTION,'+
|
|
'CURRENT_DATE,CURRENT_ROLE,CURRENT_TIME,CURRENT_TIMESTAMP,'+
|
|
'CURRENT_TRANSACTION,CURRENT_USER,CURSOR,DATABASE,DATA,DATE,DATEADD,'+
|
|
'DATEDIFF,DAY,DDL,DEC,DECFLOAT,DECIMAL,DECLARE,DECODE,DECRYPT,DEFAULT,'+
|
|
'DEFINER,DELETE,DELETING,DENSE_RANK,DESC,DESCENDING,DESCRIPTOR,'+
|
|
'DETERMINISTIC,DIFFERENCE,DISABLE,DISCONNECT,DISTINCT,DO,DOMAIN,DOUBLE,DROP,'+
|
|
'ELSE,ENABLE,ENCRYPT,END,ENGINE,ENTRY_POINT,ESCAPE,EXCEPTION,EXCESS,EXCLUDE,'+
|
|
'EXECUTE,EXISTS,EXIT,EXP,EXTENDED,EXTERNAL,EXTRACT,FALSE,FETCH,FILE,FILTER,'+
|
|
'FIRST,FIRST_DAY,FIRST_VALUE,FIRSTNAME,FLOAT,FLOOR,FOLLOWING,FOR,FOREIGN,'+
|
|
'FREE_IT,FROM,FULL,FUNCTION,GDSCODE,GENERATED,GENERATOR,GEN_ID,GEN_UUID,'+
|
|
'GLOBAL,GRANT,GRANTED,GROUP,HASH,HAVING,HEX_DECODE,HEX_ENCODE,HOUR,IDENTITY,'+
|
|
'IDLE,IF,IGNORE,IIF,IN,INACTIVE,INCLUDE,INCREMENT,INDEX,INNER,INPUT_TYPE,'+
|
|
'INSENSITIVE,INSERT,INSERTING,INT,INT128,INTEGER,INTO,INVOKER,IS,ISOLATION,'+
|
|
'IV,JOIN,KEY,LAG,LAST,LAST_DAY,LAST_VALUE,LASTNAME,LEAD,LEADING,LEAVE,LEFT,'+
|
|
'LEGACY,LENGTH,LEVEL,LIFETIME,LIKE,LIMBO,LINGER,LIST,LN,LATERAL,LOCAL,'+
|
|
'LOCALTIME,LOCALTIMESTAMP,LOCK,LOG,LOG10,LONG,LOWER,LPAD,LPARAM,MAKE_DBKEY,'+
|
|
'MANUAL,MAPPING,MATCHED,MATCHING,MAX,MAXVALUE,MERGE,MESSAGE,MILLISECOND,'+
|
|
'MIDDLENAME,MIN,MINUTE,MINVALUE,MOD,MODE,MODULE_NAME,MONTH,NAME,NAMES,'+
|
|
'NATIONAL,NATIVE,NATURAL,NCHAR,NEXT,NO,NORMALIZE_DECFLOAT,NOT,NTH_VALUE,'+
|
|
'NTILE,NULLIF,NULL,NULLS,NUMBER,NUMERIC,OCTET_LENGTH,OF,OFFSET,OLDEST,ON,'+
|
|
'ONLY,OPEN,OPTION,OR,ORDER,OS_NAME,OTHERS,OUTER,OUTPUT_TYPE,OVER,OVERFLOW,'+
|
|
'OVERLAY,OVERRIDING,PACKAGE,PAD,PAGE,PAGES,PAGE_SIZE,PARAMETER,PARTITION,'+
|
|
'PASSWORD,PERCENT_RANK,PI,PLACING,PLAN,PLUGIN,POOL,POSITION,POST_EVENT,'+
|
|
'POWER,PRECEDING,PRECISION,PRESERVE,PRIMARY,PRIOR,PRIVILEGE,PRIVILEGES,'+
|
|
'PROCEDURE,PROTECTED,PUBLICATION,QUANTIZE,RAND,RANGE,RANK,RDB$DB_KEY,'+
|
|
'RDB$ERROR,RDB$GET_CONTEXT,RDB$GET_TRANSACTION_CN,RDB$RECORD_VERSION,'+
|
|
'RDB$ROLE_IN_USE,RDB$SET_CONTEXT,RDB$SYSTEM_PRIVILEGE,READ,REAL,'+
|
|
'RECORD_VERSION,RECREATE,RECURSIVE,REFERENCES,REGR_AVGX,REGR_AVGY,'+
|
|
'REGR_COUNT,REGR_INTERCEPT,REGR_R2,REGR_SLOPE,REGR_SXX,REGR_SXY,REGR_SYY,'+
|
|
'RELATIVE,RELEASE,REPLACE,REQUESTS,RESERV,RESERVING,RESET,RESETTING,RESTART,'+
|
|
'RESTRICT,RETAIN,RETURN,RETURNING,RETURNING_VALUES,RETURNS,REVERSE,REVOKE,'+
|
|
'RIGHT,ROLE,ROLLBACK,ROUND,ROW,ROW_COUNT,ROW_NUMBER,ROWS,RPAD,RSA_DECRYPT,'+
|
|
'RSA_ENCRYPT,RSA_PRIVATE,RSA_PUBLIC,RSA_SIGN_HASH,RSA_VERIFY_HASH,SALT_LENGTH,'+
|
|
'SAVEPOINT,SCALAR_ARRAY,SCHEMA,SCROLL,SECOND,SECURITY,SEGMENT,SELECT,'+
|
|
'SENSITIVE,SEQUENCE,SERVERWIDE,SESSION,SET,SHADOW,SHARED,SIGN,SIGNATURE,'+
|
|
'SIMILAR,SIN,SINGULAR,SINH,SIZE,SKIP,SMALLINT,SNAPSHOT,SOME,SORT,SOURCE,'+
|
|
'SPACE,SQL,SQLCODE,SQLSTATE,SQRT,STABILITY,START,STARTING,STARTS,STATEMENT,'+
|
|
'STATISTICS,STDDEV_POP,STDDEV_SAMP,SUBSTRING,SUB_TYPE,SUM,SUSPEND,SYSTEM,'+
|
|
'TABLE,TAGS,TAN,TANH,TEMPORARY,THEN,TIES,TIME,TIMESTAMP,TIMEOUT,'+
|
|
'TIMEZONE_HOUR,TIMEZONE_MINUTE,TO,TOTALORDER,TRAILING,TRANSACTION,TRAPS,'+
|
|
'TRIGGER,TRIM,TRUE,TRUNC,TRUSTED,TWO_PHASE,TYPE,UNBOUNDED,UNCOMMITTED,UNDO,'+
|
|
'UNION,UNIQUE,UNKNOWN,UPDATE,UPDATING,UPPER,USAGE,USER,USING,UUID_TO_CHAR,'+
|
|
'VALUE,VALUES,VAR_POP,VAR_SAMP,VARBINARY,VARCHAR,VARIABLE,VARYING,VIEW,WAIT,'+
|
|
'WEEK,WEEKDAY,WHEN,WHERE,WHILE,WINDOW,WITH,WITHOUT,WORK,WRITE,YEAR,YEARDAY,'+
|
|
'ZONE';
|
|
|
|
procedure MakeIdentTable;
|
|
var
|
|
c: char;
|
|
begin
|
|
FillChar(Identifiers, SizeOf(Identifiers), 0);
|
|
for c := 'a' to 'z' do
|
|
Identifiers[c] := TRUE;
|
|
for c := 'A' to 'Z' do
|
|
Identifiers[c] := TRUE;
|
|
for c := '0' to '9' do
|
|
Identifiers[c] := TRUE;
|
|
Identifiers['_'] := TRUE;
|
|
Identifiers['#'] := TRUE; // DJLP 2000-09-05
|
|
Identifiers['$'] := TRUE; // DJLP 2000-09-05
|
|
|
|
FillChar(mHashTable, SizeOf(mHashTable), 0);
|
|
mHashTable['_'] := 1;
|
|
for c := 'a' to 'z' do
|
|
mHashTable[c] := 2 + Ord(c) - Ord('a');
|
|
for c := 'A' to 'Z' do
|
|
mHashTable[c] := 2 + Ord(c) - Ord('A');
|
|
|
|
Move(Identifiers, IdentifiersMSSQL7, SizeOf(Identifiers));
|
|
Move(mHashTable, mHashTableMSSQL7, SizeOf(mHashTable));
|
|
IdentifiersMSSQL7['@'] := TRUE;
|
|
mHashTableMSSQL7['@'] := mHashTableMSSQL7['Z'] + 1;
|
|
end;
|
|
|
|
function TSynSQLSyn.KeyHash(ToHash: PChar): Integer;
|
|
var
|
|
Start: PChar;
|
|
begin
|
|
Result := 0;
|
|
Start := ToHash;
|
|
while fIdentifiersPtr^[ToHash^] do begin
|
|
|
|
Result := (2 * Result + fmHashTablePtr^[ToHash^]) and $FFFFFF;
|
|
inc(ToHash);
|
|
end;
|
|
Result := Result and $FF; // 255
|
|
fStringLen := ToHash - Start;
|
|
end;
|
|
|
|
function TSynSQLSyn.KeyComp(const aKey: string): Boolean;
|
|
var
|
|
i: integer;
|
|
pKey1, pKey2: PChar;
|
|
begin
|
|
pKey1 := fToIdent;
|
|
// Note: fStringLen is always > 0 !
|
|
pKey2 := pointer(aKey);
|
|
for i := 1 to fStringLen do
|
|
begin
|
|
if mHashTable[pKey1^] <> mHashTable[pKey2^] then
|
|
begin
|
|
Result := FALSE;
|
|
exit;
|
|
end;
|
|
Inc(pKey1);
|
|
Inc(pKey2);
|
|
end;
|
|
Result := TRUE;
|
|
end;
|
|
|
|
function TSynSQLSyn.IdentKind(MayBe: PChar): TtkTokenKind;
|
|
var
|
|
Entry: TSynHashEntry;
|
|
begin
|
|
fToIdent := MayBe;
|
|
Entry := fKeywords[KeyHash(MayBe)];
|
|
while Assigned(Entry) do begin
|
|
if Entry.KeywordLen > fStringLen then
|
|
break
|
|
else if Entry.KeywordLen = fStringLen then
|
|
if KeyComp(Entry.Keyword) then begin
|
|
Result := TtkTokenKind(Entry.Kind);
|
|
exit;
|
|
end;
|
|
Entry := Entry.Next;
|
|
end;
|
|
Result := tkIdentifier;
|
|
end;
|
|
|
|
procedure TSynSQLSyn.MakeMethodTables;
|
|
var
|
|
I: Char;
|
|
begin
|
|
for I := #0 to #255 do
|
|
case I of
|
|
#0: fProcTable[I] := @NullProc;
|
|
#10: fProcTable[I] := @LFProc;
|
|
#13: fProcTable[I] := @CRProc;
|
|
#39: fProcTable[I] := @AsciiCharProc;
|
|
'=': fProcTable[I] := @EqualProc;
|
|
'>': fProcTable[I] := @GreaterProc;
|
|
'<': fProcTable[I] := @LowerProc;
|
|
'-': fProcTable[I] := @MinusProc;
|
|
'|': fProcTable[I] := @OrSymbolProc;
|
|
'+': fProcTable[I] := @PlusProc;
|
|
'/': fProcTable[I] := @SlashProc;
|
|
'&': fProcTable[I] := @AndSymbolProc;
|
|
#34: fProcTable[I] := @StringProc;
|
|
':', '@':
|
|
fProcTable[I] := @VariableProc;
|
|
'A'..'Z', 'a'..'z', '_':
|
|
fProcTable[I] := @IdentProc;
|
|
'0'..'9':
|
|
fProcTable[I] := @NumberProc;
|
|
#1..#9, #11, #12, #14..#32:
|
|
fProcTable[I] := @SpaceProc;
|
|
'^', '%', '*', '!':
|
|
fProcTable[I] := @SymbolAssignProc;
|
|
'{', '}', '.', ',', ';', '?', '(', ')', '[', ']', '~':
|
|
fProcTable[I] := @SymbolProc;
|
|
else
|
|
fProcTable[I] := @UnknownProc;
|
|
end;
|
|
end;
|
|
|
|
constructor TSynSQLSyn.Create(AOwner: TComponent);
|
|
begin
|
|
inherited Create(AOwner);
|
|
fKeywords := TSynHashEntryList.Create;
|
|
fTableNames := TStringList.Create;
|
|
TStringList(fTableNames).OnChange := @TableNamesChanged;
|
|
fCommentAttri := TSynHighlighterAttributes.Create(@SYNS_AttrComment, SYNS_XML_AttrComment);
|
|
fCommentAttri.Style := [fsItalic];
|
|
AddAttribute(fCommentAttri);
|
|
fDataTypeAttri := TSynHighlighterAttributes.Create(@SYNS_AttrDataType, SYNS_XML_AttrDataType);
|
|
fDataTypeAttri.Style := [fsBold];
|
|
AddAttribute(fDataTypeAttri);
|
|
{begin} // DJLP 2000-08-11
|
|
fDefaultPackageAttri :=
|
|
TSynHighlighterAttributes.Create(@SYNS_AttrDefaultPackage, SYNS_XML_AttrDefaultPackage);
|
|
fDefaultPackageAttri.Style := [fsBold];
|
|
AddAttribute(fDefaultPackageAttri);
|
|
{end} // DJLP 2000-08-11
|
|
fExceptionAttri := TSynHighlighterAttributes.Create(@SYNS_AttrException, SYNS_XML_AttrException);
|
|
fExceptionAttri.Style := [fsItalic];
|
|
AddAttribute(fExceptionAttri);
|
|
fFunctionAttri := TSynHighlighterAttributes.Create(@SYNS_AttrFunction, SYNS_XML_AttrFunction);
|
|
fFunctionAttri.Style := [fsBold];
|
|
AddAttribute(fFunctionAttri);
|
|
fIdentifierAttri := TSynHighlighterAttributes.Create(@SYNS_AttrIdentifier, SYNS_XML_AttrIdentifier);
|
|
AddAttribute(fIdentifierAttri);
|
|
fKeyAttri := TSynHighlighterAttributes.Create(@SYNS_AttrReservedWord, SYNS_XML_AttrReservedWord);
|
|
fKeyAttri.Style := [fsBold];
|
|
AddAttribute(fKeyAttri);
|
|
fNumberAttri := TSynHighlighterAttributes.Create(@SYNS_AttrNumber, SYNS_XML_AttrNumber);
|
|
AddAttribute(fNumberAttri);
|
|
{begin} // DJLP 2000-08-11
|
|
fPLSQLAttri := TSynHighlighterAttributes.Create(@SYNS_AttrPLSQL, SYNS_XML_AttrPLSQL);
|
|
fPLSQLAttri.Style := [fsBold];
|
|
AddAttribute(fPLSQLAttri);
|
|
{end} // DJLP 2000-08-11
|
|
fSpaceAttri := TSynHighlighterAttributes.Create(@SYNS_AttrSpace, SYNS_XML_AttrSpace);
|
|
AddAttribute(fSpaceAttri);
|
|
{begin} // DJLP 2000-09-05
|
|
fSQLPlusAttri:=TSynHighlighterAttributes.Create(@SYNS_AttrSQLPlus, SYNS_XML_AttrSQLPlus);
|
|
fSQLPlusAttri.Style := [fsBold];
|
|
AddAttribute(fSQLPlusAttri);
|
|
{end} // DJLP 2000-09-05
|
|
fStringAttri := TSynHighlighterAttributes.Create(@SYNS_Attrstring, SYNS_XML_Attrstring);
|
|
AddAttribute(fStringAttri);
|
|
fSymbolAttri := TSynHighlighterAttributes.Create(@SYNS_AttrSymbol, SYNS_XML_AttrSymbol);
|
|
AddAttribute(fSymbolAttri);
|
|
fTableNameAttri := TSynHighlighterAttributes.Create(@SYNS_AttrTableName, SYNS_XML_AttrTableName);
|
|
AddAttribute(fTableNameAttri);
|
|
fVariableAttri := TSynHighlighterAttributes.Create(@SYNS_AttrVariable, SYNS_XML_AttrVariable);
|
|
AddAttribute(fVariableAttri);
|
|
SetAttributesOnChange(@DefHighlightChange);
|
|
MakeMethodTables;
|
|
fDefaultFilter := SYNS_FilterSQL;
|
|
fRange := rsUnknown;
|
|
fDialect := sqlStandard;
|
|
SQLDialect := sqlSybase;
|
|
end;
|
|
|
|
destructor TSynSQLSyn.Destroy;
|
|
begin
|
|
fKeywords.Free;
|
|
fTableNames.Free;
|
|
inherited Destroy;
|
|
end;
|
|
|
|
procedure TSynSQLSyn.Assign(Source: TPersistent);
|
|
begin
|
|
inherited Assign(Source);
|
|
if (Source is TSynSQLSyn) then
|
|
SQLDialect := TSynSQLSyn(Source).SQLDialect;
|
|
end;
|
|
|
|
procedure TSynSQLSyn.SetLine(const NewValue: string; LineNumber: Integer);
|
|
begin
|
|
inherited;
|
|
fLine := PChar(NewValue);
|
|
Run := 0;
|
|
fLineNumber := LineNumber;
|
|
Next;
|
|
end;
|
|
|
|
procedure TSynSQLSyn.AndSymbolProc;
|
|
begin
|
|
fTokenID := tkSymbol;
|
|
Inc(Run);
|
|
if fLine[Run] in ['=', '&'] then Inc(Run);
|
|
end;
|
|
|
|
procedure TSynSQLSyn.AsciiCharProc;
|
|
begin
|
|
// Oracle SQL allows strings to go over multiple lines
|
|
if fLine[Run] = #0 then
|
|
NullProc
|
|
else begin
|
|
fTokenID := tkString;
|
|
if (fRange = rsString) and (fLine[Run] = #39) then begin
|
|
// End of a string after linebreak
|
|
Inc(Run);
|
|
fRange := rsUnknown;
|
|
end
|
|
else
|
|
if SQLDialect <> sqlMySql then begin
|
|
fRange := rsString;
|
|
repeat
|
|
Inc(Run);
|
|
until fLine[Run] in [#0, #10, #13, #39];
|
|
if fLine[Run] = #39 then begin
|
|
Inc(Run);
|
|
fRange := rsUnknown;
|
|
end;
|
|
end
|
|
else begin
|
|
fRange := rsString;
|
|
repeat
|
|
if (fLine[Run] = '\') and (fLine[Run+1] in [#39, '\']) then
|
|
Inc(Run);
|
|
Inc(Run);
|
|
until fLine[Run] in [#0, #10, #13, #39];
|
|
if fLine[Run] = #39 then begin
|
|
Inc(Run);
|
|
fRange := rsUnknown;
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TSynSQLSyn.CRProc;
|
|
begin
|
|
fTokenID := tkSpace;
|
|
Inc(Run);
|
|
if fLine[Run] = #10 then Inc(Run);
|
|
end;
|
|
|
|
procedure TSynSQLSyn.EqualProc;
|
|
begin
|
|
fTokenID := tkSymbol;
|
|
Inc(Run);
|
|
if fLine[Run] in ['=', '>'] then Inc(Run);
|
|
end;
|
|
|
|
procedure TSynSQLSyn.GreaterProc;
|
|
begin
|
|
fTokenID := tkSymbol;
|
|
Inc(Run);
|
|
if fLine[Run] in ['=', '>'] then Inc(Run);
|
|
end;
|
|
|
|
procedure TSynSQLSyn.IdentProc;
|
|
begin
|
|
fTokenID := IdentKind((fLine + Run));
|
|
inc(Run, fStringLen);
|
|
{begin} // DJLP 2000-08-11
|
|
if fTokenID = tkComment then begin
|
|
while not (fLine[Run] in [#0, #10, #13]) do
|
|
Inc(Run);
|
|
end else
|
|
{end} // DJLP 2000-08-11
|
|
while fIdentifiersPtr^[fLine[Run]] do inc(Run);
|
|
end;
|
|
|
|
procedure TSynSQLSyn.LFProc;
|
|
begin
|
|
fTokenID := tkSpace;
|
|
inc(Run);
|
|
end;
|
|
|
|
procedure TSynSQLSyn.LowerProc;
|
|
begin
|
|
fTokenID := tkSymbol;
|
|
Inc(Run);
|
|
case fLine[Run] of
|
|
'=': Inc(Run);
|
|
'<': begin
|
|
Inc(Run);
|
|
if fLine[Run] = '=' then Inc(Run);
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TSynSQLSyn.MinusProc;
|
|
begin
|
|
Inc(Run);
|
|
if fLine[Run] = '-' then begin
|
|
fTokenID := tkComment;
|
|
repeat
|
|
Inc(Run);
|
|
until fLine[Run] in [#0, #10, #13];
|
|
end else
|
|
fTokenID := tkSymbol;
|
|
end;
|
|
|
|
procedure TSynSQLSyn.NullProc;
|
|
begin
|
|
fTokenID := tkNull;
|
|
end;
|
|
|
|
procedure TSynSQLSyn.NumberProc;
|
|
begin
|
|
inc(Run);
|
|
fTokenID := tkNumber;
|
|
while FLine[Run] in ['0'..'9'] do inc(Run);
|
|
if (FLine[Run]='.') and not(fLine[Run+1]='.') then begin
|
|
inc(Run);
|
|
while FLine[Run] in ['0'..'9'] do inc(Run);
|
|
end;
|
|
if (FLine[Run]='e') or (fLine[Run]='E') then begin
|
|
inc(Run);
|
|
if (FLine[Run]='+') or (fLine[Run]='-') then inc(Run);
|
|
while FLine[Run] in ['0'..'9'] do inc(Run);
|
|
end;
|
|
end;
|
|
|
|
procedure TSynSQLSyn.OrSymbolProc;
|
|
begin
|
|
fTokenID := tkSymbol;
|
|
Inc(Run);
|
|
if fLine[Run] in ['=', '|'] then Inc(Run);
|
|
end;
|
|
|
|
procedure TSynSQLSyn.PlusProc;
|
|
begin
|
|
fTokenID := tkSymbol;
|
|
Inc(Run);
|
|
if fLine[Run] in ['=', '+'] then Inc(Run);
|
|
end;
|
|
|
|
procedure TSynSQLSyn.SlashProc;
|
|
begin
|
|
Inc(Run);
|
|
case fLine[Run] of
|
|
'*':
|
|
begin
|
|
fRange := rsComment;
|
|
fTokenID := tkComment;
|
|
repeat
|
|
Inc(Run);
|
|
if (fLine[Run] = '*') and (fLine[Run + 1] = '/') then begin
|
|
fRange := rsUnknown;
|
|
Inc(Run, 2);
|
|
break;
|
|
end;
|
|
until fLine[Run] in [#0, #10, #13];
|
|
end;
|
|
'=':
|
|
begin
|
|
Inc(Run);
|
|
fTokenID := tkSymbol;
|
|
end;
|
|
else
|
|
fTokenID := tkSymbol;
|
|
end;
|
|
end;
|
|
|
|
procedure TSynSQLSyn.SpaceProc;
|
|
begin
|
|
fTokenID := tkSpace;
|
|
repeat
|
|
Inc(Run);
|
|
until (fLine[Run] > #32) or (fLine[Run] in [#0, #10, #13]);
|
|
end;
|
|
|
|
procedure TSynSQLSyn.StringProc;
|
|
begin
|
|
fTokenID := tkString;
|
|
Inc(Run);
|
|
while not (fLine[Run] in [#0, #10, #13]) do begin
|
|
case fLine[Run] of
|
|
'\': if fLine[Run + 1] in [#34, '\'] then
|
|
Inc(Run);
|
|
#34: if fLine[Run + 1] <> #34 then
|
|
begin
|
|
Inc(Run);
|
|
break;
|
|
end;
|
|
end;
|
|
Inc(Run);
|
|
end;
|
|
end;
|
|
|
|
procedure TSynSQLSyn.SymbolProc;
|
|
begin
|
|
Inc(Run);
|
|
fTokenID := tkSymbol;
|
|
end;
|
|
|
|
procedure TSynSQLSyn.SymbolAssignProc;
|
|
begin
|
|
fTokenID := tkSymbol;
|
|
Inc(Run);
|
|
if fLine[Run] = '=' then Inc(Run);
|
|
end;
|
|
|
|
procedure TSynSQLSyn.VariableProc;
|
|
var
|
|
i: integer;
|
|
begin
|
|
// MS SQL uses @@ to indicate system functions/variables
|
|
if (fDialect in [sqlMSSQL7, sqlMSSQL2K, sqlMSSQL2022]) and (fLine[Run] = '@') and (fLine[Run + 1] = '@')
|
|
then
|
|
IdentProc
|
|
{begin} //JDR 2000-25-2000
|
|
else if (SQLDialect in [sqlMySql, sqlOracle]) and (fLine[Run] = '@') then
|
|
SymbolProc
|
|
{end} //JDR 2000-25-2000
|
|
// Oracle uses the ':' character to indicate bind variables
|
|
{begin} //JJV 2000-11-16
|
|
// Ingres II also uses the ':' character to indicate variables
|
|
else
|
|
if not (SQLDialect in [sqlOracle, sqlIngres]) and (fLine[Run] = ':') then
|
|
{end} //JJV 2000-11-16
|
|
SymbolProc
|
|
else begin
|
|
fTokenID := tkVariable;
|
|
i := Run;
|
|
repeat
|
|
Inc(i);
|
|
until not (fIdentifiersPtr^[fLine[i]]);
|
|
Run := i;
|
|
end;
|
|
end;
|
|
|
|
procedure TSynSQLSyn.UnknownProc;
|
|
begin
|
|
if (SQLDialect = sqlMySql) and (fLine[Run] = '#') and (Run = 0) then //DDH Changes from Tonci Grgin for MYSQL
|
|
begin
|
|
fTokenID := tkComment;
|
|
fRange := rsComment;
|
|
end else begin
|
|
{$IFDEF SYN_MBCSSUPPORT}
|
|
if FLine[Run] in LeadBytes then
|
|
Inc(Run,2)
|
|
else
|
|
{$ENDIF}
|
|
inc(Run);
|
|
while (fLine[Run] in [#128..#191]) OR // continued utf8 subcode
|
|
((fLine[Run]<>#0) and (fProcTable[fLine[Run]] = @UnknownProc)) do inc(Run);
|
|
fTokenID := tkUnknown;
|
|
end;
|
|
end;
|
|
|
|
procedure TSynSQLSyn.AnsiCProc;
|
|
begin
|
|
case fLine[Run] of
|
|
#0: NullProc;
|
|
#10: LFProc;
|
|
#13: CRProc;
|
|
else begin
|
|
fTokenID := tkComment;
|
|
if (SQLDialect = sqlMySql) and (fLine[Run] = '#') then begin //DDH Changes from Tonci Grgin for MYSQL
|
|
repeat
|
|
Inc(Run);
|
|
until fLine[Run] in [#0, #10, #13];
|
|
fRange := rsUnknown;
|
|
end
|
|
else begin
|
|
|
|
repeat
|
|
if (fLine[Run] = '*') and (fLine[Run + 1] = '/') then begin
|
|
fRange := rsUnknown;
|
|
Inc(Run, 2);
|
|
break;
|
|
end;
|
|
Inc(Run);
|
|
until fLine[Run] in [#0, #10, #13];
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
{begin} // DJLP 2000-08-09
|
|
function TSynSQLSyn.IsKeyword(const AKeyword: string): boolean;
|
|
var
|
|
tk: TtkTokenKind;
|
|
begin
|
|
tk := IdentKind(PChar(AKeyword));
|
|
Result := tk in [tkDatatype, tkException, tkFunction, tkKey, tkPLSQL,
|
|
tkDefaultPackage];
|
|
end;
|
|
{end} // DJLP 2000-08-09
|
|
|
|
procedure TSynSQLSyn.Next;
|
|
begin
|
|
fTokenPos := Run;
|
|
case fRange of
|
|
rsComment:
|
|
AnsiCProc;
|
|
rsString:
|
|
AsciiCharProc;
|
|
else
|
|
fProcTable[fLine[Run]]();
|
|
end;
|
|
end;
|
|
|
|
function TSynSQLSyn.GetDefaultAttribute(Index: integer):
|
|
TSynHighlighterAttributes;
|
|
begin
|
|
case Index of
|
|
SYN_ATTR_COMMENT: Result := fCommentAttri;
|
|
SYN_ATTR_IDENTIFIER: Result := fIdentifierAttri;
|
|
SYN_ATTR_KEYWORD: Result := fKeyAttri;
|
|
SYN_ATTR_STRING: Result := fStringAttri;
|
|
SYN_ATTR_WHITESPACE: Result := fSpaceAttri;
|
|
SYN_ATTR_SYMBOL: Result := fSymbolAttri;
|
|
SYN_ATTR_NUMBER: Result := fNumberAttri;
|
|
SYN_ATTR_VARIABLE: Result := fVariableAttri;
|
|
else
|
|
Result := nil;
|
|
end;
|
|
end;
|
|
|
|
function TSynSQLSyn.GetEol: Boolean;
|
|
begin
|
|
Result := fTokenID = tkNull;
|
|
end;
|
|
|
|
function TSynSQLSyn.GetRange: Pointer;
|
|
begin
|
|
Result := Pointer(PtrInt(fRange));
|
|
end;
|
|
|
|
function TSynSQLSyn.GetToken: string;
|
|
var
|
|
Len: LongInt;
|
|
begin
|
|
Result := '';
|
|
Len := Run - fTokenPos;
|
|
Setstring(Result, (FLine + fTokenPos), Len);
|
|
end;
|
|
|
|
procedure TSynSQLSyn.GetTokenEx(out TokenStart: PChar; out TokenLength: integer);
|
|
begin
|
|
TokenLength:=Run-fTokenPos;
|
|
TokenStart:=FLine + fTokenPos;
|
|
end;
|
|
|
|
function TSynSQLSyn.GetTokenID: TtkTokenKind;
|
|
begin
|
|
Result := fTokenId;
|
|
end;
|
|
|
|
function TSynSQLSyn.GetTokenAttribute: TSynHighlighterAttributes;
|
|
begin
|
|
case GetTokenID of
|
|
tkComment: Result := fCommentAttri;
|
|
tkDatatype: Result := fDataTypeAttri;
|
|
tkDefaultPackage: Result := fDefaultPackageAttri; // DJLP 2000-08-11
|
|
tkException: Result := fExceptionAttri;
|
|
tkFunction: Result := fFunctionAttri;
|
|
tkIdentifier: Result := fIdentifierAttri;
|
|
tkKey: Result := fKeyAttri;
|
|
tkNumber: Result := fNumberAttri;
|
|
tkPLSQL: Result := fPLSQLAttri; // DJLP 2000-08-11
|
|
tkSpace: Result := fSpaceAttri;
|
|
tkSQLPlus: Result := fSQLPlusAttri; // DJLP 2000-08-11
|
|
tkString: Result := fStringAttri;
|
|
tkSymbol: Result := fSymbolAttri;
|
|
tkTableName: Result := fTableNameAttri;
|
|
tkVariable: Result := fVariableAttri;
|
|
tkUnknown: Result := fIdentifierAttri;
|
|
else
|
|
Result := nil;
|
|
end;
|
|
end;
|
|
|
|
function TSynSQLSyn.GetTokenKind: integer;
|
|
begin
|
|
Result := Ord(fTokenId);
|
|
end;
|
|
|
|
function TSynSQLSyn.GetTokenPos: Integer;
|
|
begin
|
|
Result := fTokenPos;
|
|
end;
|
|
|
|
procedure TSynSQLSyn.ResetRange;
|
|
begin
|
|
fRange := rsUnknown;
|
|
end;
|
|
|
|
procedure TSynSQLSyn.SetRange(Value: Pointer);
|
|
begin
|
|
fRange := TRangeState(PtrUInt(Value));
|
|
end;
|
|
|
|
function TSynSQLSyn.GetIdentChars: TSynIdentChars;
|
|
begin
|
|
Result := TSynValidStringChars;
|
|
if (fDialect in [sqlMSSQL7, sqlMSSQL2K, sqlMSSQL2022]) then
|
|
Include(Result, '@')
|
|
{begin} // DJLP 2000-08-11
|
|
else if fDialect = sqlOracle then begin
|
|
Include(Result, '#');
|
|
Include(Result, '$');
|
|
end
|
|
{end} // DJLP 2000-08-11
|
|
else if (fDialect = sqlFirebird25) or
|
|
(fDialect = sqlFirebird30) or
|
|
(fDialect = sqlFirebird40) then Include(Result, '$');
|
|
end;
|
|
|
|
class function TSynSQLSyn.GetLanguageName: string;
|
|
begin
|
|
Result := SYNS_LangSQL;
|
|
end;
|
|
|
|
procedure TSynSQLSyn.DoAddKeyword(AKeyword: string; AKind: integer);
|
|
var
|
|
HashValue: integer;
|
|
begin
|
|
HashValue := KeyHash(PChar(AKeyword));
|
|
fKeywords[HashValue] := TSynHashEntry.Create(AKeyword, AKind);
|
|
end;
|
|
|
|
procedure TSynSQLSyn.SetTableNames(const Value: TStrings);
|
|
begin
|
|
fTableNames.Assign(Value);
|
|
end;
|
|
|
|
procedure TSynSQLSyn.TableNamesChanged(Sender: TObject);
|
|
begin
|
|
InitializeKeywordLists;
|
|
end;
|
|
|
|
procedure TSynSQLSyn.PutTableNamesInKeywordList;
|
|
var
|
|
i: Integer;
|
|
Entry: TSynHashEntry;
|
|
begin
|
|
for i := 0 to (fTableNames.Count - 1) do
|
|
begin
|
|
Entry := fKeywords[KeyHash(PChar(fTableNames[i]))];
|
|
while Assigned(Entry) do
|
|
begin
|
|
if CompareText(Entry.Keyword, fTableNames[i]) = 0 then
|
|
Break;
|
|
Entry := Entry.Next;
|
|
end;
|
|
if not Assigned(Entry) then
|
|
DoAddKeyword(fTableNames[i], Ord(tkTableName));
|
|
end;
|
|
end;
|
|
|
|
procedure TSynSQLSyn.InitializeKeywordLists;
|
|
begin
|
|
fKeywords.Clear;
|
|
if (fDialect in [sqlMSSQL7, sqlMSSQL2K, sqlMSSQL2022]) then
|
|
begin
|
|
fIdentifiersPtr := @IdentifiersMSSQL7;
|
|
fmHashTablePtr := @mHashTableMSSQL7;
|
|
end else begin
|
|
fIdentifiersPtr := @Identifiers;
|
|
fmHashTablePtr := @mHashTable;
|
|
end;
|
|
|
|
case fDialect of
|
|
sqlPostgres:
|
|
begin
|
|
EnumerateKeywords(Ord(tkKey), PostgresKW, IdentChars, @DoAddKeyword);
|
|
EnumerateKeywords(Ord(tkDatatype), PostgresTypes, IdentChars,
|
|
@DoAddKeyword);
|
|
EnumerateKeywords(Ord(tkFunction), PostgresFunctions, IdentChars,
|
|
@DoAddKeyword);
|
|
EnumerateKeywords(Ord(tkException), PostgresExceptions, IdentChars,
|
|
@DoAddKeyword);
|
|
end;
|
|
sqlSqlite:
|
|
begin
|
|
EnumerateKeywords(Ord(tkDatatype), SQLiteTypes, IdentChars,
|
|
@DoAddKeyword);
|
|
EnumerateKeywords(Ord(tkFunction), SQLiteFunctions, IdentChars,
|
|
@DoAddKeyword);
|
|
EnumerateKeywords(Ord(tkKey), SQLiteKW, IdentChars, @DoAddKeyword);
|
|
end;
|
|
sqlIngres:
|
|
begin
|
|
EnumerateKeywords(Ord(tkDatatype), IngresTypes, IdentChars,
|
|
@DoAddKeyword);
|
|
EnumerateKeywords(Ord(tkKey), IngresKW, IdentChars, @DoAddKeyword);
|
|
EnumerateKeywords(Ord(tkFunction), IngresFunctions, IdentChars,
|
|
@DoAddKeyword);
|
|
end;
|
|
sqlInterbase6:
|
|
begin
|
|
EnumerateKeywords(Ord(tkDatatype), Interbase6Types, IdentChars,
|
|
@DoAddKeyword);
|
|
EnumerateKeywords(Ord(tkFunction), Interbase6Functions, IdentChars,
|
|
@DoAddKeyword);
|
|
EnumerateKeywords(Ord(tkKey), Interbase6KW, IdentChars, @DoAddKeyword);
|
|
end;
|
|
sqlMSSQL7:
|
|
begin
|
|
EnumerateKeywords(Ord(tkKey), MSSQL7KW, IdentChars, @DoAddKeyword);
|
|
EnumerateKeywords(Ord(tkDatatype), MSSQL7Types, IdentChars,
|
|
@DoAddKeyword);
|
|
EnumerateKeywords(Ord(tkFunction), MSSQL7Functions, IdentChars,
|
|
@DoAddKeyword);
|
|
end;
|
|
sqlMSSQL2K:
|
|
begin
|
|
EnumerateKeywords(ord(tkKey), MSSQL2000KW, IdentChars, @DoAddKeyword);
|
|
EnumerateKeywords(ord(tkDataType), MSSQL2000Types, IdentChars, @DoAddKeyword);
|
|
EnumerateKeywords(ord(tkFunction), MSSQL2000Functions, IdentChars, @DoAddKeyword);
|
|
end;
|
|
sqlMSSQL2022:
|
|
begin
|
|
EnumerateKeywords(Ord(tkKey), MSSQLKW, IdentChars, @DoAddKeyword);
|
|
EnumerateKeywords(Ord(tkDatatype), MSSQLTypes, IdentChars, @DoAddKeyword);
|
|
EnumerateKeywords(Ord(tkFunction), MSSQLFunctions, IdentChars, @DoAddKeyword);
|
|
end;
|
|
sqlMySql:
|
|
begin
|
|
EnumerateKeywords(Ord(tkKey), MySqlKW, IdentChars, @DoAddKeyword);
|
|
EnumerateKeywords(Ord(tkDatatype), MySqlTypes, IdentChars,
|
|
@DoAddKeyword);
|
|
EnumerateKeywords(Ord(tkFunction), MySqlFunctions, IdentChars,
|
|
@DoAddKeyword);
|
|
end;
|
|
sqlOracle:
|
|
begin
|
|
EnumerateKeywords(Ord(tkKey), OracleKW, IdentChars, @DoAddKeyword);
|
|
EnumerateKeywords(Ord(tkDatatype), OracleTypes, IdentChars,
|
|
@DoAddKeyword);
|
|
EnumerateKeywords(Ord(tkException), OracleExceptions, IdentChars,
|
|
@DoAddKeyword);
|
|
EnumerateKeywords(Ord(tkFunction), OracleFunctions, IdentChars,
|
|
@DoAddKeyword);
|
|
EnumerateKeywords(Ord(tkComment), OracleCommentKW, IdentChars,
|
|
@DoAddKeyword);
|
|
EnumerateKeywords(Ord(tkDefaultPackage), OracleDefaultPackages,
|
|
IdentChars, @DoAddKeyword);
|
|
EnumerateKeywords(Ord(tkPLSQL), OraclePLSQLKW, IdentChars,
|
|
@DoAddKeyword);
|
|
EnumerateKeywords(Ord(tkSQLPlus), OracleSQLPlusCommands, IdentChars,
|
|
@DoAddKeyword);
|
|
end;
|
|
sqlStandard:
|
|
EnumerateKeywords(Ord(tkKey), StandardKW, IdentChars + ['-'], @DoAddKeyword);
|
|
sqlSybase:
|
|
EnumerateKeywords(Ord(tkKey), SybaseKW, IdentChars, @DoAddKeyword);
|
|
sqlFirebird25:
|
|
EnumerateKeywords(Ord(tkKey), Firebird25KW, IdentChars, @DoAddKeyword);
|
|
sqlFirebird30:
|
|
EnumerateKeywords(Ord(tkKey), Firebird30KW, IdentChars, @DoAddKeyword);
|
|
sqlFirebird40:
|
|
EnumerateKeywords(Ord(tkKey), Firebird40KW, IdentChars, @DoAddKeyword);
|
|
end;
|
|
PutTableNamesInKeywordList;
|
|
DefHighlightChange(Self);
|
|
end;
|
|
|
|
procedure TSynSQLSyn.SetDialect(Value: TSQLDialect);
|
|
begin
|
|
if (Value <> fDialect) then
|
|
begin
|
|
fDialect := Value;
|
|
InitializeKeywordLists;
|
|
end;
|
|
end;
|
|
|
|
function TSynSQLSyn.GetSampleSource: String;
|
|
begin
|
|
Result:= '';
|
|
case fDialect of
|
|
sqlPostgres:
|
|
Result := '-- PostgreSQL SQL sample source'#13#10 +
|
|
'SELECT datname'#13#10 +
|
|
'FROM pg_database'#13#10 +
|
|
'WHERE datname = ''postgres'';';
|
|
sqlStandard:
|
|
Result := '-- ansi sql sample source'#13#10 +
|
|
'select name , region'#13#10 +
|
|
'from cia'#13#10 +
|
|
'where area < 2000'#13#10 +
|
|
'and gdp > 5000000000';
|
|
sqlInterbase6:
|
|
Result := '/* Interbase sample source */'#13#10 +
|
|
'SET TERM !! ;'#13#10 +
|
|
#13#10 +
|
|
'CREATE PROCEDURE HelloWorld(P_MSG VARCHAR(80)) AS'#13#10 +
|
|
'BEGIN'#13#10 +
|
|
' EXECUTE PROCEDURE WRITELN(:P_MSG);'#13#10 +
|
|
'END !!'#13#10 +
|
|
#13#10 +
|
|
'SET TERM ; !!';
|
|
sqlMySQL:
|
|
Result := '/* MySQL sample source*/'#13#10 +
|
|
'SET @variable= { 1 }'#13#10 +
|
|
#13#10 +
|
|
'CREATE TABLE sample ('#13#10 +
|
|
' id INT NOT NULL,'#13#10 +
|
|
' first_name CHAR(30) NOT NULL,'#13#10 +
|
|
' PRIMARY KEY (id),'#13#10 +
|
|
' INDEX name (first_name));'#13#10 +
|
|
#13#10 +
|
|
'SELECT DATE_ADD("1997-12-31 23:59:59",'#13#10 +
|
|
' INTERVAL 1 SECOND);'#13#10 +
|
|
#13#10 +
|
|
'# End of sample';
|
|
sqlOracle:
|
|
Result := 'PROMPT Oracle sample source'#13#10 +
|
|
'declare'#13#10 +
|
|
' x varchar2(2000);'#13#10 +
|
|
'begin -- Show some text here'#13#10 +
|
|
' select to_char(count(*)) into x'#13#10 +
|
|
' from tab;'#13#10 +
|
|
#13#10 +
|
|
' dbms_output.put_line(''Hello World: '' || x);'#13#10 +
|
|
'exception'#13#10 +
|
|
' when others then'#13#10 +
|
|
' null;'#13#10 +
|
|
'end;';
|
|
sqlSybase:
|
|
Result := '/* SyBase example source */'#13#10 +
|
|
'declare @Integer int'#13#10 +
|
|
#13#10 +
|
|
'/* Good for positive numbers only. */'#13#10 +
|
|
'select @Integer = 1000'#13#10 +
|
|
#13#10 +
|
|
'select "Positives Only" ='#13#10 +
|
|
' right(replicate("0",12) + '#13#10 +
|
|
' convert(varchar, @Integer),12)'#13#10 +
|
|
#13#10 +
|
|
'/* Good for positive and negative numbers. */'#13#10 +
|
|
'select @Integer = -1000'#13#10 +
|
|
#13#10 +
|
|
'select "Both Signs" ='#13#10 +
|
|
' substring( "- +", (sign(@Integer) + 2), 1) +'#13#10 +
|
|
' right(replicate("0",12) + '#13#10 +
|
|
' convert(varchar, abs(@Integer)),12)'#13#10 +
|
|
#13#10 +
|
|
'select @Integer = 1000'#13#10 +
|
|
#13#10 +
|
|
'select "Both Signs" ='#13#10 +
|
|
' substring( "- +", (sign(@Integer) + 2), 1) +'#13#10 +
|
|
' right(replicate("0",12) + '#13#10 +
|
|
' convert(varchar, abs(@Integer)),12)'#13#10 +
|
|
#13#10 +
|
|
'go';
|
|
sqlIngres:
|
|
Result := '/* Ingres example source */'#13#10 +
|
|
'DELETE'#13#10 +
|
|
'FROM t1'#13#10 +
|
|
'WHERE EXISTS'#13#10 +
|
|
'(SELECT t2.column1, t2.column2'#13#10 +
|
|
'FROM t2'#13#10 +
|
|
'WHERE t1.column1 = t2.column1 and'#13#10 +
|
|
't1.column2 = t2.column2)';
|
|
sqlMSSQL7:
|
|
Result := '/* SQL Server 7 example source */'#13#10 +
|
|
'SET QUOTED_IDENTIFIER OFF'#13#10 +
|
|
'GO'#13#10 +
|
|
'SET ANSI_NULLS OFF'#13#10 +
|
|
'GO'#13#10 +
|
|
#13#10 +
|
|
'/* Object: Stored Procedure dbo.sp_PPQInsertOrder */'#13#10 +
|
|
'CREATE PROCEDURE sp_PPQInsertOrder'#13#10 +
|
|
' @Name varchar(25),'#13#10 +
|
|
' @Address varchar(255),'#13#10 +
|
|
' @ZipCode varchar(15)'#13#10 +
|
|
'As'#13#10 +
|
|
' INSERT INTO PPQOrders(Name, Address, ZipCode, OrderDate)'#13#10 +
|
|
' VALUES (@Name, @Address, @ZipCode, GetDate())'#13#10 +
|
|
#13#10 +
|
|
' SELECT SCOPE_IDENTITY()'#13#10 +
|
|
'GO';
|
|
sqlMSSQL2K:
|
|
Result := '/* SQL Server2000 example source */'#13#10 +
|
|
'SET QUOTED_IDENTIFIER OFF'#13#10 +
|
|
'GO'#13#10 +
|
|
'SET ANSI_NULLS OFF'#13#10 +
|
|
'GO'#13#10 +
|
|
#13#10 +
|
|
'/* Object: Stored Procedure dbo.sp_PPQInsertOrder */'#13#10 +
|
|
'CREATE PROCEDURE sp_PPQInsertOrder'#13#10 +
|
|
' @Name varchar(25),'#13#10 +
|
|
' @Address varchar(255),'#13#10 +
|
|
' @ZipCode varchar(15)'#13#10 +
|
|
'As'#13#10 +
|
|
' INSERT INTO PPQOrders(Name, Address, ZipCode, OrderDate)'#13#10 +
|
|
' VALUES (@Name, @Address, @ZipCode, GetDate())'#13#10 +
|
|
#13#10 +
|
|
' SELECT SCOPE_IDENTITY()'#13#10 +
|
|
'GO';
|
|
sqlMSSQL2022:
|
|
Result := '/* SQL Server example source */'#13#10 +
|
|
'SET QUOTED_IDENTIFIER OFF'#13#10 +
|
|
'GO'#13#10 +
|
|
'SET ANSI_NULLS OFF'#13#10 +
|
|
'GO'#13#10 +
|
|
#13#10 +
|
|
'/* Object: Stored Procedure dbo.sp_PPQInsertOrder */'#13#10 +
|
|
'CREATE PROCEDURE sp_PPQInsertOrder'#13#10 +
|
|
' @Name varchar(25),'#13#10 +
|
|
' @Address varchar(255),'#13#10 +
|
|
' @ZipCode varchar(15)'#13#10 +
|
|
'As'#13#10 +
|
|
' INSERT INTO PPQOrders(Name, Address, ZipCode, OrderDate)'#13#10 +
|
|
' VALUES (@Name, @Address, @ZipCode, GetDate())'#13#10 +
|
|
#13#10 +
|
|
' SELECT SCOPE_IDENTITY()'#13#10 +
|
|
'GO';
|
|
end;
|
|
end;
|
|
|
|
initialization
|
|
MakeIdentTable;
|
|
RegisterPlaceableHighlighter(TSynSQLSyn);
|
|
|
|
end.
|