我正在尝试使用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身份登录,因此可以成为特权问题吗?
答案 0 :(得分:1)
文档中有错误。 DUAL表的支持方式与Oracle语法相同,但NEXTVAL是用作test_seq.NEXTVAL
的Oracle表单。
DB2支持NEXT VALUE FOR test_seq
并允许NEXTVAL替代NEXT VALUE。这将在下一版HSQLDB中得到支持。