druid [SQLParser] 无法解析JDBC转义语法 (JDBC escape syntax)

6tr1vspr  于 2022-11-02  发布在  Druid
关注(0)|答案(6)|浏览(173)

http://db.apache.org/derby/docs/10.1/ref/rrefjdbc1020262.html
JDBC 转义语法
您可以在任何 JDBC 应用程序(包括 Interactive SQL)中使用 JDBC 转义语法。此转义语法允许您调用存储过程而不管您正在使用哪种数据库管理系统。转义语法的一般格式为
这组关键字包括:

•{d date-string} 日期字符串是 SQL Anywhere 接受的任意日期值。

•{t time-string} 时间字符串是 SQL Anywhere 接受的任意时间值。

•{ts date-string time-string} 日期/时间字符串是 SQL Anywhere 接受的任意时间戳值。

•{guid uuid-string} uuid-string 是任意有效的 GUID 字符串,例如 41dfe9ef-db91-11d2-8c43-006008d26a6f。

•{oj outer-join-expr} outer-join-expr 是 SQL Anywhere 接受的有效 OUTER JOIN 表达式。

•{? = call func(p1,...)} 此函数是 SQL Anywhere 接受的任意有效函数调用。

•{call proc(p1,...)} 此过程是 SQL Anywhere 接受的任意有效存储过程调用。

•{fn func(p1,...)} 此函数为下文所列函数库中的任一函数。

@Test
public void testJDBCFunction() {
    String sql = "SELECT DISTINCT {fn TIMESTAMPDIFF(SQL_TSI_MONTH,'1999-5-19 00:00:00','1999-12-20 12:00:00')} FROM Sample.Person";
    PGSelectParser parser = new PGSelectParser(sql);
    SQLSelect select = parser.select();

    MySqlOutputVisitor ov = new MySqlOutputVisitor(new StringBuilder());
    ov.setPrettyFormat(false);
    select.accept(ov);
}

Exception:

com.alibaba.druid.sql.parser.ParserException: ERROR. token : LBRACE, pos : 17
at com.alibaba.druid.sql.parser.SQLExprParser.primary(SQLExprParser.java:568)
at com.alibaba.druid.sql.parser.SQLExprParser.expr(SQLExprParser.java:110)
at com.alibaba.druid.sql.parser.SQLSelectParser.expr(SQLSelectParser.java:445)
at com.alibaba.druid.sql.parser.SQLSelectParser.parseSelectItem(SQLSelectParser.java:301)
at com.alibaba.druid.sql.parser.SQLSelectParser.parseSelectList(SQLSelectParser.java:274)
at com.alibaba.druid.sql.dialect.postgresql.parser.PGSelectParser.query(PGSelectParser.java:83)
at com.alibaba.druid.sql.parser.SQLSelectParser.select(SQLSelectParser.java:60)
at com.alibaba.druid.sql.KeywordsTest.testJDBCFunction(KeywordsTest.java:87)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
vohkndzv

vohkndzv3#

如何,有打算支持吗?

llycmphe

llycmphe4#

最新的1.1.2也没办法解析......

ghhaqwfi

ghhaqwfi5#

最新的1.1.4也没办法解析,看来是不想实现该功能了

yi0zb3m4

yi0zb3m46#

最新的1.1.5也没办法解析...

相关问题