0

我正在尝试使用 HSQL 进行测试。在生产中,代码针对 DB2 数据库运行。我想打开 HSQL 的 DB2 语法并针对它运行生产 SQL(或尽可能多地运行它)。

根据文档,在 DB2 语法模式下,nextval for支持表达式。

我已经使用连接属性打开了 DB2 语法模式sql.syntax_db2=true,以及:

set database sql syntax db2 true;

但是,我无法使用nextval for,尽管语法next value for可以正常工作:

values (next value for test_seq); -- returns the next value
values (nextval for test_seq); -- results in an error

错误是:

Error: user lacks privilege or object not found: NEXTVAL
SQLState:  42501
ErrorCode: -5501

我没有正确激活 DB2 语法模式,还是我做错了什么?我以 SA 身份登录,这可能是权限问题吗?

4

1 回答 1

1

文档中有错误。DUAL 表的支持方式与 Oracle 语法相同,但 NEXTVAL 是一种 Oracle 形式,用作test_seq.NEXTVAL.

DB2 支持NEXT VALUE FOR test_seq并允许 NEXTVAL 作为 NEXT VALUE 的替代方案。这将在 HSQLDB 的下一个版本中得到支持。

于 2013-02-27T15:09:05.170 回答