xref: /vim-8.2.3635/runtime/syntax/sqloracle.vim (revision 675e8d6a)
1" Vim syntax file
2" Language:	SQL, PL/SQL (Oracle 11g)
3" Maintainer:	Christian Brabandt
4" Repository:   https://github.com/chrisbra/vim-sqloracle-syntax
5" License:      Vim
6" Previous Maintainer:	Paul Moore
7" Last Change:	2018 June 24
8
9" Changes:
10" 02.04.2016: Support for when keyword
11" 03.04.2016: Support for join related keywords
12" 22.07.2016: Support Oracle Q-Quote-Syntax
13" 25.07.2016: Support for Oracle N'-Quote syntax
14" 22.06.2018: Remove skip part for sqlString (do not escape strings)
15" (https://web.archive.org/web/20150922065035/https://mariadb.com/kb/en/sql-99/character-string-literals/)
16
17if exists("b:current_syntax")
18  finish
19endif
20
21syn case ignore
22
23" The SQL reserved words, defined as keywords.
24
25syn keyword sqlSpecial	false null true
26
27syn keyword sqlKeyword	access add as asc begin by case check cluster column
28syn keyword sqlKeyword	cache compress connect current cursor decimal default desc
29syn keyword sqlKeyword	else elsif end exception exclusive file for from
30syn keyword sqlKeyword	function group having identified if immediate increment
31syn keyword sqlKeyword	index initial initrans into is level link logging loop
32syn keyword sqlKeyword	maxextents maxtrans mode modify monitoring
33syn keyword sqlKeyword	nocache nocompress nologging noparallel nowait of offline on online start
34syn keyword sqlKeyword	parallel successful synonym table tablespace then to trigger uid
35syn keyword sqlKeyword	unique user validate values view when whenever
36syn keyword sqlKeyword	where with option order pctfree pctused privileges procedure
37syn keyword sqlKeyword	public resource return row rowlabel rownum rows
38syn keyword sqlKeyword	session share size smallint type using
39syn keyword sqlKeyword	join cross inner outer left right
40
41syn keyword sqlOperator	not and or
42syn keyword sqlOperator	in any some all between exists
43syn keyword sqlOperator	like escape
44syn keyword sqlOperator	union intersect minus
45syn keyword sqlOperator	prior distinct
46syn keyword sqlOperator	sysdate out
47
48syn keyword sqlStatement analyze audit comment commit
49syn keyword sqlStatement delete drop execute explain grant lock noaudit
50syn keyword sqlStatement rename revoke rollback savepoint set
51syn keyword sqlStatement truncate
52" next ones are contained, so folding works.
53syn keyword sqlStatement create update alter select insert contained
54
55syn keyword sqlType	bfile blob boolean char character clob date datetime
56syn keyword sqlType	dec decimal float int integer long mlslabel nchar
57syn keyword sqlType	nclob number numeric nvarchar2 precision raw rowid
58syn keyword sqlType	smallint real timestamp urowid varchar varchar2 varray
59
60" Strings:
61syn region sqlString	matchgroup=Quote start=+n\?"+     end=+"+
62syn region sqlString	matchgroup=Quote start=+n\?'+     end=+'+
63syn region sqlString	matchgroup=Quote start=+n\?q'\z([^[(<{]\)+    end=+\z1'+
64syn region sqlString	matchgroup=Quote start=+n\?q'<+   end=+>'+
65syn region sqlString	matchgroup=Quote start=+n\?q'{+   end=+}'+
66syn region sqlString	matchgroup=Quote start=+n\?q'(+   end=+)'+
67syn region sqlString	matchgroup=Quote start=+n\?q'\[+  end=+]'+
68
69" Numbers:
70syn match sqlNumber	"-\=\<\d*\.\=[0-9_]\>"
71
72" Comments:
73syn region sqlComment	start="/\*"  end="\*/" contains=sqlTodo,@Spell fold
74syn match sqlComment	"--.*$" contains=sqlTodo,@Spell
75syn match sqlComment "^rem.*$" contains=sqlTodo,@Spell
76
77" Setup Folding:
78" this is a hack, to get certain statements folded.
79" the keywords create/update/alter/select/insert need to
80" have contained option.
81syn region sqlFold start='^\s*\zs\c\(Create\|Update\|Alter\|Select\|Insert\)' end=';$\|^$' transparent fold contains=ALL
82
83syn sync ccomment sqlComment
84
85" Functions:
86" (Oracle 11g)
87" Aggregate Functions
88syn keyword sqlFunction	avg collect corr corr_s corr_k count covar_pop covar_samp cume_dist dense_rank first
89syn keyword sqlFunction	group_id grouping grouping_id last max median min percentile_cont percentile_disc percent_rank rank
90syn keyword sqlFunction	regr_slope regr_intercept regr_count regr_r2 regr_avgx regr_avgy regr_sxx regr_syy regr_sxy
91syn keyword sqlFunction	stats_binomial_test stats_crosstab stats_f_test stats_ks_test stats_mode stats_mw_test
92syn keyword sqlFunction	stats_one_way_anova stats_t_test_one stats_t_test_paired stats_t_test_indep stats_t_test_indepu
93syn keyword sqlFunction	stats_wsr_test stddev stddev_pop stddev_samp sum
94syn keyword sqlFunction	sys_xmlagg var_pop var_samp variance xmlagg
95" Char Functions
96syn keyword sqlFunction	ascii chr concat initcap instr length lower lpad ltrim
97syn keyword sqlFunction	nls_initcap nls_lower nlssort nls_upper regexp_instr regexp_replace
98syn keyword sqlFunction	regexp_substr replace rpad rtrim soundex substr translate treat trim upper
99" Comparison Functions
100syn keyword sqlFunction	greatest least
101" Conversion Functions
102syn keyword sqlFunction	asciistr bin_to_num cast chartorowid compose convert
103syn keyword sqlFunction	decompose hextoraw numtodsinterval numtoyminterval rawtohex rawtonhex rowidtochar
104syn keyword sqlFunction	rowidtonchar scn_to_timestamp timestamp_to_scn to_binary_double to_binary_float
105syn keyword sqlFunction	to_char to_char to_char to_clob to_date to_dsinterval to_lob to_multi_byte
106syn keyword sqlFunction	to_nchar to_nchar to_nchar to_nclob to_number to_dsinterval to_single_byte
107syn keyword sqlFunction	to_timestamp to_timestamp_tz to_yminterval to_yminterval translate unistr
108" DataMining Functions
109syn keyword sqlFunction	cluster_id cluster_probability cluster_set feature_id feature_set
110syn keyword sqlFunction	feature_value prediction prediction_bounds prediction_cost
111syn keyword sqlFunction	prediction_details prediction_probability prediction_set
112" Datetime Functions
113syn keyword sqlFunction	add_months current_date current_timestamp dbtimezone extract
114syn keyword sqlFunction	from_tz last_day localtimestamp months_between new_time
115syn keyword sqlFunction	next_day numtodsinterval numtoyminterval round sessiontimezone
116syn keyword sqlFunction	sys_extract_utc sysdate systimestamp to_char to_timestamp
117syn keyword sqlFunction	to_timestamp_tz to_dsinterval to_yminterval trunc tz_offset
118" Numeric Functions
119syn keyword sqlFunction	abs acos asin atan atan2 bitand ceil cos cosh exp
120syn keyword sqlFunction	floor ln log mod nanvl power remainder round sign
121syn keyword sqlFunction	sin sinh sqrt tan tanh trunc width_bucket
122" NLS Functions
123syn keyword sqlFunction	ls_charset_decl_len nls_charset_id nls_charset_name
124" Various Functions
125syn keyword sqlFunction	bfilename cardin coalesce collect decode dump empty_blob empty_clob
126syn keyword sqlFunction	lnnvl nullif nvl nvl2 ora_hash powermultiset powermultiset_by_cardinality
127syn keyword sqlFunction	sys_connect_by_path sys_context sys_guid sys_typeid uid user userenv vsizeality
128" XML Functions
129syn keyword sqlFunction	appendchildxml deletexml depth extract existsnode extractvalue insertchildxml
130syn keyword sqlFunction	insertxmlbefore path sys_dburigen sys_xmlagg sys_xmlgen updatexml xmlagg xmlcast
131syn keyword sqlFunction	xmlcdata xmlcolattval xmlcomment xmlconcat xmldiff xmlelement xmlexists xmlforest
132syn keyword sqlFunction	xmlparse xmlpatch xmlpi xmlquery xmlroot xmlsequence xmlserialize xmltable xmltransform
133" Todo:
134syn keyword sqlTodo TODO FIXME XXX DEBUG NOTE contained
135
136" Define the default highlighting.
137hi def link Quote		Special
138hi def link sqlComment		Comment
139hi def link sqlFunction		Function
140hi def link sqlKeyword		sqlSpecial
141hi def link sqlNumber		Number
142hi def link sqlOperator		sqlStatement
143hi def link sqlSpecial		Special
144hi def link sqlStatement	Statement
145hi def link sqlString		String
146hi def link sqlType		Type
147hi def link sqlTodo		Todo
148
149let b:current_syntax = "sql"
150" vim: ts=8
151