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