blob: 0907b48f0ee14bdd0fcda44c15535136215db2cc [file] [log] [blame]
Bram Moolenaar1056d982006-03-09 22:37:52 +00001" Vim syntax file
Bram Moolenaard042dc82015-11-24 19:18:36 +01002" 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
Bram Moolenaar675e8d62018-06-24 20:42:01 +02007" Last Change: 2018 June 24
Bram Moolenaar6f1d9a02016-07-24 14:12:38 +02008
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
Bram Moolenaareb3dc872018-05-13 22:34:24 +020013" 25.07.2016: Support for Oracle N'-Quote syntax
Bram Moolenaar675e8d62018-06-24 20:42:01 +020014" 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/)
Bram Moolenaar1056d982006-03-09 22:37:52 +000016
Bram Moolenaard042dc82015-11-24 19:18:36 +010017if exists("b:current_syntax")
Bram Moolenaar1056d982006-03-09 22:37:52 +000018 finish
19endif
20
21syn case ignore
22
23" The SQL reserved words, defined as keywords.
24
Bram Moolenaard042dc82015-11-24 19:18:36 +010025syn keyword sqlSpecial false null true
Bram Moolenaar1056d982006-03-09 22:37:52 +000026
Bram Moolenaard042dc82015-11-24 19:18:36 +010027syn keyword sqlKeyword access add as asc begin by case check cluster column
28syn keyword sqlKeyword cache compress connect current cursor decimal default desc
Bram Moolenaar1056d982006-03-09 22:37:52 +000029syn keyword sqlKeyword else elsif end exception exclusive file for from
30syn keyword sqlKeyword function group having identified if immediate increment
Bram Moolenaard042dc82015-11-24 19:18:36 +010031syn 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
Bram Moolenaar6f1d9a02016-07-24 14:12:38 +020035syn keyword sqlKeyword unique user validate values view when whenever
Bram Moolenaard042dc82015-11-24 19:18:36 +010036syn keyword sqlKeyword where with option order pctfree pctused privileges procedure
Bram Moolenaar1056d982006-03-09 22:37:52 +000037syn keyword sqlKeyword public resource return row rowlabel rownum rows
38syn keyword sqlKeyword session share size smallint type using
Bram Moolenaar6f1d9a02016-07-24 14:12:38 +020039syn keyword sqlKeyword join cross inner outer left right
Bram Moolenaar1056d982006-03-09 22:37:52 +000040
41syn keyword sqlOperator not and or
42syn keyword sqlOperator in any some all between exists
43syn keyword sqlOperator like escape
Bram Moolenaard042dc82015-11-24 19:18:36 +010044syn keyword sqlOperator union intersect minus
45syn keyword sqlOperator prior distinct
Bram Moolenaar1056d982006-03-09 22:37:52 +000046syn keyword sqlOperator sysdate out
47
Bram Moolenaard042dc82015-11-24 19:18:36 +010048syn 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
Bram Moolenaar1056d982006-03-09 22:37:52 +000054
Bram Moolenaar675e8d62018-06-24 20:42:01 +020055syn 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
Bram Moolenaar1056d982006-03-09 22:37:52 +000059
Bram Moolenaard042dc82015-11-24 19:18:36 +010060" Strings:
Bram Moolenaar675e8d62018-06-24 20:42:01 +020061syn region sqlString matchgroup=Quote start=+n\?"+ end=+"+
62syn region sqlString matchgroup=Quote start=+n\?'+ end=+'+
Bram Moolenaar6f1d9a02016-07-24 14:12:38 +020063syn 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=+]'+
Bram Moolenaar1056d982006-03-09 22:37:52 +000068
69" Numbers:
Bram Moolenaard042dc82015-11-24 19:18:36 +010070syn match sqlNumber "-\=\<\d*\.\=[0-9_]\>"
Bram Moolenaar1056d982006-03-09 22:37:52 +000071
72" Comments:
Bram Moolenaard042dc82015-11-24 19:18:36 +010073syn region sqlComment start="/\*" end="\*/" contains=sqlTodo,@Spell fold
74syn match sqlComment "--.*$" contains=sqlTodo,@Spell
Bram Moolenaar675e8d62018-06-24 20:42:01 +020075syn match sqlComment "^rem.*$" contains=sqlTodo,@Spell
Bram Moolenaard042dc82015-11-24 19:18:36 +010076
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
Bram Moolenaar1056d982006-03-09 22:37:52 +000082
83syn sync ccomment sqlComment
84
Bram Moolenaard042dc82015-11-24 19:18:36 +010085" 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
Bram Moolenaar1056d982006-03-09 22:37:52 +0000135
136" Define the default highlighting.
Bram Moolenaar675e8d62018-06-24 20:42:01 +0200137hi 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
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200144hi def link sqlStatement Statement
Bram Moolenaar675e8d62018-06-24 20:42:01 +0200145hi def link sqlString String
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200146hi def link sqlType Type
147hi def link sqlTodo Todo
Bram Moolenaar1056d982006-03-09 22:37:52 +0000148
Bram Moolenaar1056d982006-03-09 22:37:52 +0000149let b:current_syntax = "sql"
Bram Moolenaar1056d982006-03-09 22:37:52 +0000150" vim: ts=8