It surprised me to learn that by default, on executing multiple commands in EXAPlus, the execution does not stop on error.
I was happily executing batches of code and thinking that everything was fine, as it all executed so quickly, and the last message displaying in the log panel was successful, so therefore, everything worked out…right? WRONG!
My code had a bug in one of the middle scripts, but despite the execution encountering the error, the execution as a whole continued.
Luckily, this was highlighted to me at exaxp16, by one of the support team.
So, here’s how to set the flag, to abort execution on error in EXAPlus:
In EXAPlus, go to SQL > Error Handling > All Errors > Select Abort
To run scripts in EXASOL from the command line, you might try to run the following code.
C:\Users\You>"C:\Program Files (x86)\EXASOL\EXASolution-5.0\EXAplus\Exaplus.exe"
-c SERVER_IP_HERE -u USER_HERE -p PASSWORD_HERE
For me, this resulted in the following error.
Can not find the Java Runtime Environment needed by EXAplus.
Trying to use system wide virtual machine (from registry) instead.
No 32 bit java virtual machine found in registry.
I had Java installed, but not the version Exasol was looking for.
To solve this, I then downloaded and installed the latest version of java from https://java.com/en/download/manual.jsp , then restarted my computer.
When performing an UPDATE statement you may get this error message:
 Unable to get a stable set of rows in the source tables (Session: )
This is because when EXASOL is performing the UPDATE, under the covers it is really doing a MERGE. You can read more about this in Chapter 2 of the Exasol manual, but the highlight is as follows:
Internally, this statement is transformed into a MERGE statement. Therefore, error
messages can refer to the MERGE command. If one row is updated multiple times,
the new value must be identical. Otherwise you will get the error message “Unable
to get a stable set of rows in the source tables”.
Essentially, make sure that a row is only being updated once.