Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
xuse opened this issue Oct 23, 2014 · 6 comments
Open

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

xuse opened this issue Oct 23, 2014 · 6 comments

Comments

@xuse
Copy link

xuse commented Oct 23, 2014

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)
@jacking124
Copy link
Contributor

那个版本

@xuse
Copy link
Author

xuse commented Oct 28, 2014

Druid 1.0.9.

@xuse
Copy link
Author

xuse commented Mar 31, 2015

如何,有打算支持吗?

@MasterOogwayis
Copy link

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

@yidasanqian
Copy link
Contributor

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

@1kpang
Copy link

1kpang commented Nov 17, 2017

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants