如何在HyperSQL(HSQL)中打开DB2语法?

时间:2013-02-27 14:28:18

标签: db2 hsqldb

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

根据the documentation,在DB2语法模式中,支持nextval for表达式。

我已经使用连接属性sql.syntax_db2=true和以下内容启用了DB2语法模式:

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身份登录,因此可以成为特权问题吗?

1 个答案:

答案 0 :(得分:1)

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

DB2支持NEXT VALUE FOR test_seq并允许NEXTVAL替代NEXT VALUE。这将在下一版HSQLDB中得到支持。