我正在查看一些旧代码,并且遇到运行其中一个单元测试的问题。
代码是:
String sql = "insert into customers" +
"(name, age, date, id) " +
" values " +
" (?, ?, ?, CUSTOMERS_SEQ.NEXTVAL)";
if (LOG.isDebugEnabled()) LOG.debug("doInsert: SQL query = " + sql);
int count;
PreparedStatement pStmt = null;
try {
// insert!
pStmt = conn.prepareStatement(sql); // fails over here
//... do other stuff
}
//...more things
但是,在尝试准备语句时会抛出错误
用户缺少未找到的权限或对象:CUSTOMERS_SEQ.NEXTVAL。
我正在阅读有关错误本身的内容,似乎无法找到任何内容。奇怪的是,当我在本地运行查询
Select CUSTOMERS_SEQ.NEXTVAL from CUSTOMERS
它可以正常工作。
非常感谢任何和所有帮助。
答案 0 :(得分:2)
表达式css
不是SQL标准表达式,而是Oracle语法表达式。您需要通过以下语句启用Oracle语法兼容性:
CUSTOMERS_SEQ.NEXTVAL
或在连接网址上包含SET DATABASE SQL SYNTAX ORA TRUE
。
启用此兼容模式时,INSERT语句应该有效(它可以与HSQLDB 2.4.0一起使用)
等效的SQL标准表达式为:
sql.syntax_ora=true