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