I am reading DDL and DML statements from a series of files, and attempting to parse them using JSQL Parser before executing them using standard JDBC. Most statements work fine, but the parser throws an error when parsing the following (valid) DML statement:
INSERT INTO FOO (ID,NAME,VALUE)
VALUES ('42','BAR','Need'||CHR(59)||'embedded'||CHR(59)||'semicolons'||CHR(59)||'here.');
The error thrown is:
<omitted>
Caused by: net.sf.jsqlparser.parser.TokenMgrError: Lexical error at line 2, column 72.
Encountered: "|" (124), after : ""
net.sf.jsqlparser.parser.CCJSqlParserTokenManager.getNextToken(CCJSqlParserTokenManager.java:1290)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_ntk(CCJSqlParser.java:4890)
at net.sf.jsqlparser.parser.CCJSqlParser.Insert(CCJSqlParser.java:358)
at net.sf.jsqlparser.parser.CCJSqlParser.Statement(CCJSqlParser.java:111)
at net.sf.jsqlparser.parser.CCJSqlParserManager.parse(CCJSqlParserManager.java:38)
... 19 more
I have tried to use the Oracle "CONCAT" instead of the "||" syntax with a very similar error result.
Any assistance would be appreciated.
- Sam
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I am reading DDL and DML statements from a series of files, and attempting to parse them using JSQL Parser before executing them using standard JDBC. Most statements work fine, but the parser throws an error when parsing the following (valid) DML statement:
INSERT INTO FOO (ID,NAME,VALUE)
VALUES ('42','BAR','Need'||CHR(59)||'embedded'||CHR(59)||'semicolons'||CHR(59)||'here.');
The error thrown is:
<omitted>
Caused by: net.sf.jsqlparser.parser.TokenMgrError: Lexical error at line 2, column 72.
Encountered: "|" (124), after : ""
net.sf.jsqlparser.parser.CCJSqlParserTokenManager.getNextToken(CCJSqlParserTokenManager.java:1290)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_ntk(CCJSqlParser.java:4890)
at net.sf.jsqlparser.parser.CCJSqlParser.Insert(CCJSqlParser.java:358)
at net.sf.jsqlparser.parser.CCJSqlParser.Statement(CCJSqlParser.java:111)
at net.sf.jsqlparser.parser.CCJSqlParserManager.parse(CCJSqlParserManager.java:38)
... 19 more
I have tried to use the Oracle "CONCAT" instead of the "||" syntax with a very similar error result.
Any assistance would be appreciated.
- Sam
By the way, a different DML statement containing "||" works just fine for setting a character set:
UPDATE FOO SET VALUE = '^([0-9a-zA-Z|\+\*\$@#%'||CHR(38)||'!-]){8,}$' WHERE ID = '42';
- Sam