【问题标题】:Schema level sequences in HSQLHSQL 中的模式级序列
【发布时间】:2013-11-19 08:37:34
【问题描述】:

我在自动化组件测试中使用 HSQLDB 作为数据库。它模拟生产环境的 Oracle 数据库。

在我的 SQL 代码中,我在模式范围内定义了一个序列,例如

CREATE SEQUENCE THE_SCHEMA.THE_SEQUENCE ... ;

然后当我从这个架构中获取 nextval 时:

Connection con = ...
String query = "SELECT THE_SCHEMA.THE_SEQUENCE.nextval as MyNextVal from DUAL;"
PreparedStatement ps = con.prepareStatement(query);
ResultSet resultSet = ps.executeQuery();

我在 con.prepareStatement(query) 调用中收到如下错误。

当我像下面这样在全局范围内定义序列时,上面的代码运行良好

CREATE SEQUENCE THE_SEQUENCE ... ;

改变

String query = "SELECT THE_SEQUENCE.nextval as MyNextVal from DUAL;"

我的问题是 HSQL 是否支持模式级序列?

我错过了什么吗?

(我使用 SET DATABASE SQL SYNTAX ORA TRUE 开启了“Oracle 兼容模式”;)

堆栈跟踪:

Caused by: java.lang.NullPointerException
at org.hsqldb.RangeVariable.resolvesSchemaName(Unknown Source)
at org.hsqldb.RangeVariable.resolvesSchemaAndTableName(Unknown Source)
at org.hsqldb.RangeVariable.findColumn(Unknown Source)
at org.hsqldb.ExpressionColumn.resolveColumnReference(Unknown Source)
at org.hsqldb.ExpressionColumn.resolveColumnReferences(Unknown Source)
at org.hsqldb.QuerySpecification.resolveColumnReferencesAndAllocate(Unknown Source)
at org.hsqldb.QuerySpecification.resolveColumnReferences(Unknown Source)
at org.hsqldb.QuerySpecification.resolveReferences(Unknown Source)
at org.hsqldb.QueryExpression.resolve(Unknown Source)
at org.hsqldb.ParserDQL.compileCursorSpecification(Unknown Source)
at org.hsqldb.ParserCommand.compilePart(Unknown Source)
at org.hsqldb.ParserCommand.compileStatement(Unknown Source)
at org.hsqldb.Session.compileStatement(Unknown Source)
at org.hsqldb.StatementManager.compile(Unknown Source)
... 26 more
java.sql.SQLException: java.lang.NullPointerException java.lang.NullPointerException
at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
at org.hsqldb.jdbc.JDBCPreparedStatement.<init>(Unknown Source)
at org.hsqldb.jdbc.JDBCConnection.prepareStatement(Unknown Source)

关于从 con.prepareStatement(query) 抛出的异常的详细信息:

Exception type java.sql.SQLException
cause = org.hsqldb.HsqlException: java.lang.NullPointerException
detailMessage = java.lang.NullPointerException java.lang.NullPointerException
next = null
SQLState = S1000
stackTrace = null
vendorCode = -458

【问题讨论】:

  • 报错是什么?
  • 刚刚用堆栈跟踪更新了我的问题。

标签: java sql oracle hsqldb


【解决方案1】:

请从http://hsqldb.org/support/获取最新的HSQLDB快照jar并检查问题是否已解决。

【讨论】:

  • 这应该是评论,而不是答案
  • 快照版本hsqldb-20131025.144341-55不会出现该问题。谢谢!
猜你喜欢
  • 1970-01-01
  • 2012-03-15
  • 1970-01-01
  • 2012-07-31
  • 2013-02-03
  • 1970-01-01
  • 1970-01-01
  • 2014-09-14
  • 2016-10-24
相关资源
最近更新 更多