This blog post brought to you by the letter M as in Martin . . He asked me on twitter if SQLcl via Nashorn could use ECMA Script 6 features yet. The answer is yes. So, for the brave that want to try out the latest greatest ECMA Script 6 features it can be done with SQLcl.
This is a good reference for what's in version 6 that could be useful. The only caution is not everything is built into nashorn quite yet. For Example destructuring is not there.
http://es6-features.org/#StringInterpolation
The Template Literals are probably to me the most interesting thing since it cleans up all things like string concats and multi line string.
Here's how to get it working:
Step 1: Get Java 9 https://jdk9.java.net/download/
Step 2: Set the enviroment variable : APP_VM_OPTS="-Dnashorn.args=--language=es6"
Step 3: Go.
Complete side note as you can see in my default PS1, apple doesn't and has never understood you don't add an 's to a noun ending in a s.
kriss-MacBook-Pro:bin klrice$ export APP_VM_OPTS="-Dnashorn.args=--language=es6"
kriss-MacBook-Pro:bin klrice$ ./sql klrice/klrice
SQLcl: Release 4.2.0 Production on Thu Nov 17 09:22:35 2016
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Last Successful login time: Thu Nov 17 2016 09:22:36 -05:00
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
SQL> script /Users/klrice/workspace/raptor_common/examples/sql.js
Using Binds:[object Object]
***************************************************************
***** SIMPLE LOOP OF LIST OF LIST ***********
***************************************************************
OBJECT_TYPE OBJECT_NAME
TABLE EMPLOYEES
***************************************************************
***** SIMPLE LOOP OF LIST OF NAMES WITH BINDS **********
***************************************************************
TABLE EMPLOYEES
SQL>
Now this probably looks just like the script from my first blog on how to use javascript
http://krisrice.blogspot.in/2015/10/sqlcl-oct-13th-edition.html
However the script itself is much nicer to read ( to me anyway ) . What will stand out is multi line string with using a back tick. Also is the evaluating of variables inside the quoted string. No more string concatenations!