创建在hsqldb中不起作用的聚合函数

时间:2013-06-10 14:07:31

标签: java aggregate-functions hsqldb spring-jdbc

我正在尝试按照本页中给出的语法为hsqldb中的聚合函数创建一个java语言例程 - http://hsqldb.org/doc/2.0/guide/sqlroutines-chapt.html#src_jrt_aggregate_functions

SQL used:
CREATE AGGREGATE FUNCTION TESTFUNCTION(INOUT ARG DOUBLE) RETURNS DOUBLE
    NO SQL
    LANGUAGE JAVA
    EXTERNAL NAME 'CLASSPATH:com.XXX.tips.TestUtil.HsqlCustomFunctions.TESTFUNCTION';

我使用spring jdbcTemplate.execute方法来运行sql,我得到以下异常:

org.springframework.jdbc.BadSqlGrammarException: StatementCallback; bad SQL grammar [

nested exception is java.sql.SQLException: Unexpected token: AGGREGATE in statement [

CREATE AGGREGATE]
    at org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.doTranslate(SQLStateSQLExceptionTranslator.java:98)
    at 
...
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: java.sql.SQLException: Unexpected token: AGGREGATE in statement [

CREATE AGGREGATE]
    at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
    at org.hsqldb.jdbc.jdbcStatement.fetchResult(Unknown Source)
    at org.hsqldb.jdbc.jdbcStatement.execute(Unknown Source)
    at org.apache.commons.dbcp.DelegatingStatement.execute(DelegatingStatement.java:264)
    at org.apache.commons.dbcp.DelegatingStatement.execute(DelegatingStatement.java:264)
    at org.springframework.jdbc.core.JdbcTemplate$1ExecuteStatementCallback.doInStatement(JdbcTemplate.java:420)
    at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:395)
    ... 21 more

任何人都可以帮助我吗?我不明白为什么会这样。这很奇怪,因为它说AGGREGATE是一个意外的令牌,但我遵循正确的语法

提前致谢

1 个答案:

答案 0 :(得分:1)

这种异常通常表示您使用的是旧版HSQLDB。堆栈跟踪中的类名称显示这是旧版本1.8。使用最新的HSQLDB 2.x。