【问题标题】:Create aggregate function not working in hsqldb创建聚合函数在 hsqldb 中不起作用
【发布时间】:2013-06-06 05:22:16
【问题描述】:

我正在尝试按照本页中给出的语法为 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 是一个意外的标记,但我遵循正确的语法

提前致谢

【问题讨论】:

    标签: java aggregate-functions hsqldb spring-jdbc


    【解决方案1】:

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

    【讨论】:

    • 你好 fredt,我正在使用 hsqldb-2.0。
    • 您肯定使用的是 1.8。它必须在您的类路径中的某个位置。请使用最新版本,2.2.9 或 2.3.0 Release Candidate
    • 用 2.3.0 候选版本试试这个。它对我来说完美无缺。非常整洁的东西。
    • 我的依赖管理器说我有 2.0 版本,但我的类路径有 1.80 jar.. 感谢您的回答.. 令人惊讶的是,您仅通过查看堆栈跟踪就找到了版本.. :)
    猜你喜欢
    • 1970-01-01
    • 2020-08-02
    • 2017-09-27
    • 1970-01-01
    • 2017-04-09
    • 2017-08-20
    • 2016-04-14
    • 2018-11-12
    • 2014-07-02
    相关资源
    最近更新 更多