I use Oracle on a regular basis at work, and the built-in SQL syntax definition doesn’t support many Oracle extensions. So I wrote my own.
Some supported features:
- Pivot clauses.
- Recursive queries using
- Correct handling of double-quoted identifiers.
- Highlighting of built-in Oracle functions and constants.
- Factored subqueries appear in the symbol list.
- Detailed meta scopes for use with “expand selection to scope”.
- Quoted strings with
- A liberal helping of PL/SQL, including package, function, and stored procedure definitions.
Not currently implemented:
- Many Oracle features.
- SQLPlus interface.
Why create a new syntax rather than improving a new one? The default SQL syntax is not designed to support vendor-specific extensions, so adding detailed Oracle support would be inappropriate. There are a couple of third-party Oracle packages, but they are old-style
.tmLanguages with limited functionality. With YAML Macros, it became reasonable to implement features like correct handling of double-quoted identifiers that would otherwise be unreasonably verbose. (The compiled files are around 60% larger than the source files.)
This release is early-beta-quality. I’m open to suggestions for improvement. In particular, if you use a piece of Oracle syntax that is not yet implemented, let me know and I will bump it to the top of the list. (Please include a code sample.)