\lst@definelanguage[SQL86]{SQL}%
{	morekeywords={all,and,any,as,asc,authorization,avg,between,by,char,character,%
		close,cobol,commit,count,create,current,cursor,dec,decimal,declare,delete,%
		desc,distinct,double,escape,exists,fetch,float,for,fortran,from,grant,%
		group,having,in,indicator,insert,int,integer,into,is,language,like,max,%
		min,module,not,null,numeric,of,on,open,option,or,order,pascal,pli,%
		precision,privileges,procedure,public,real,rollback,schema,select,%
		set,smallint,some,sqlcode,sum,table,union,unique,update,user,values,%
		view,where,with,work},%
	sensitive=false,%
	morecomment=[l]--,%
	morestring=[b]'%
}[keywords,comments,strings]

\lst@definelanguage[SQL89]{SQL}[SQL86]{SQL}%
{	morekeywords={ begin,check,continue,default,end,end-exec,exec,foreign,found,%
		go,goto,key,primary,references,section,sql,sqlerror,to,whenever},%
	sensitive=false%
}[keywords]

\lst@definelanguage[SQL92]{SQL}[SQL89]{SQL}%
{	morekeywords={absolute,action,ada,add,allocate,alter,are,assertion,at,bit,%
		bit_length,both,c,cascade,cascaded,case,cast,catalog,catalog_name,%
		character_length,character_set_catalog,character_set_name,%
		character_set_schema,char_length,class_origin,coalesce,collate,%
		collation,collation_catalog,collation_name,collation_schema,column,%
		column_name,command_function,committed,condition_number,connect,%
		connection,connection_name,constraint,constraints,constraint_catalog,%
		constraint_name,constraint_schema,convert,corresponding,cross,%
		current_date,current_time,current_timestamp,current_user,cursor_name,%
		data,date,datetime_interval_code,datetime_interval_precision,day,%
		deallocate,deferrable,deferred,describe,descriptor,diagnostics,%
		disconnect,domain,drop,dynamic_function,else,except,exception,%
		execute,external,extract,false,first,full,get,global,hour,identity,%
		immediate,initially,inner,input,insensitive,intersect,interval,%
		isolation,join,last,leading,left,length,level,local,lower,match,%
		message_length,message_octet_length,minute,month,more,mumps,name,%
		names,national,natural,nchar,next,no,nullable,nullif,number,octet_length,%
		only,outer,output,overlaps,pad,partial,position,prepare,preserve,prior,%
		read,relative,repeatable,restrict,returned_length,returned_octet_length,%
		returned_sqlstate,revoke,right,rows,row_count,scale,schema_name,scroll,%
		second,serializable,server_name,session,session_user,size,space,sqlstate,%
		subclass_origin,substring,system_user,table_name,temporary,then,time,%
		timestamp,timezone_hour,timezone_minute,trailing,transaction,translate,%
		translation,trim,true,type,uncommitted,unknown,unnamed,upper,usage,%
		using,value,varchar,varying,when,write,year,zone},%
	sensitive=false,%
	morestring=[b]"%
}[keywords,strings]

\lst@definelanguage[SQL99]{SQL}[SQL92]{SQL}%
{	deletekeywords={sqlcode,sqlerror},%
	morekeywords={abs,admin,after,aggregate,alias,array,asensitive,assignment,%
		asymmetric,atomic,before,binary,bitvar,blob,blocked,boolean,breadth,%
		call,cardinality,chain,characteristics,checked,class,clob,%
		command_function_code,completion,concatenate,condition,constructor,%
		contains,control,cube,current_path,current_role,cycle,datalink,db,%
		depth,deref,destroy,destructor,deterministic,dictionary,dispatch,%
		dlcomment,dlfilesize,dlfilesizeexact,dllinktype,dlurlcomplete,%
		dlurlpath,dlurlpathonly,dlurlschema,dlurlserver,dlvalue,do,dynamic,%
		dynamic_function_code,each,elseif,equals,every,existing,exit,expand,%
		expanding,file,final,free,function,general,generated,grouping,handler,%
		hash,hold,host,if,ignore,infix,initialize,inout,instantiable,integrity,%
		iterate,key_member,key_type,large,lateral,leave,less,limit,link,%
		localtime,localtimestamp,locator,loop,meets,message_text,method,%
		mod,modifies,modify,nclob,new,none,normalize,object,off,old,operation,%
		options,ordering,ordinality,out,overlay,overriding,parameter,parameters,%
		parameter_mode,parameter_ordinal_position,parameter_specific_catalog,%
		parameter_specific_name,parameter_specific_schema,path,period,permission,%
		postfix,precedes,prefix,preorder,reads,recovery,recursive,redo,ref,%
		referencing,repeat,resignal,restore,result,return,returns,role,rollup,%
		routine,routine_catalog,routine_name,routine_schema,row,row_type_catalog,%
		row_type_name,row_type_schema,savepoint,search,selective,self,sensitive,%
		sequence,sets,signal,similar,simple,source,specific,specifictype,%
		specific_name,sqlexception,sqlwarning,start,state,static,structure,%
		style,sublist,succeeds,symmetric,system,terminate,than,%
		transactions_committed,transactions_rolled_back,transaction_active,%
		transform,treat,trigger,trigger_catalog,trigger_name,trigger_schema,%
		under,undo,unlink,until,user_defined_type_catalog,user_defined_type_name,%
		user_defined_type_schema,variable,while,without,yes}%
}[keywords]
