CallableStatement中的HSQLDB“未知JDBC转义序列”

时间:2016-02-09 22:26:06

标签: java jdbc hsqldb

我正在使用SpringMVC,我遇到了HSQLDB和CallableStatement这样的问题:

Java代码

String call = "{ ? = call MY_FUNCTION(?,?) }";
CallableStatement statement = connection.prepareCall(call);

异常

抛出以下异常:

java.sql.SQLException: Unknown JDBC escape sequence: { ? = call MY_FUNCTION(?,?) }
at org.hsqldb.jdbc.jdbcConnection.onStartEscapeSequence(Unknown Source)
at org.hsqldb.jdbc.jdbcConnection.nativeSQL(Unknown Source)
at org.hsqldb.jdbc.jdbcPreparedStatement.(Unknown Source)
at org.hsqldb.jdbc.jdbcCallableStatement.(Unknown Source)
at org.hsqldb.jdbc.jdbcConnection.prepareCall(Unknown Source)

HSQLDB JDBCConnection docs它说:

  

...为避免大量复杂性,目前尚未识别某些形式的输入空白。例如,驱动程序处理“{?= call ...}”但不处理“{?= call ...}或”{? = call ...}“

这导致相信call应该被定义为

String call = "{?= call MY_FUNCTION(?,?)}";

然而,这引发了另一个异常,因为它在<init>中失败并且甚至没有到达转义完成的部分,因此对我来说看起来更加错误:

java.sql.SQLException: Unexpected token: MY_FUNCTION in statement [    call MY_FUNCTION(?,?) ]
    at org.hsqldb.jdbc.Util.throwError(Unknown Source)
    at org.hsqldb.jdbc.jdbcPreparedStatement.<init>(Unknown Source)
    at org.hsqldb.jdbc.jdbcCallableStatement.<init>(Unknown Source)
    at org.hsqldb.jdbc.jdbcConnection.prepareCall(Unknown Source)

根据this answer,这是不可能的,但它已过时并且正在查看它所支持的docs for jdbcCallableStatement

如果与SpringMVC或HSQLDB存在某些冲突或者完全不同的话,我可能完全不知道自己要做什么。

是否可以将CallableStatement与HSQLDB 1.8一起使用?若然,怎么做?

0 个答案:

没有答案