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)
6条答案
按热度按时间o7jaxewo1#
那个版本
uubf1zoe2#
Druid 1.0.9.
vohkndzv3#
如何,有打算支持吗?
llycmphe4#
最新的1.1.2也没办法解析......
ghhaqwfi5#
最新的1.1.4也没办法解析,看来是不想实现该功能了
yi0zb3m46#
最新的1.1.5也没办法解析...