And*_*nov 4 java oracle plsql h2
我正在尝试使用H2内存数据库为我们的Java应用程序编写一些功能测试.由于我们使用Oracle作为生产数据库,因此一些代码是用PL/SQL编写的.所以我打开了Oracle兼容模式,现在我的网址看起来像这样:jdbc:h2:mem:test;MODE=Oracle.
我遇到麻烦的实际应用程序代码看起来像这样(注意,序列和表都是在调用之前创建的):
CallableStatement = con.prepareCall(
" begin insert into profiles(" + PROFILE_FIELDS + ") " +
" values (sq_profiles.nextval, ?, ?, ?, ?, ?) " +
" returning profile_id into ?; end;");
Run Code Online (Sandbox Code Playgroud)
它失败了,我写的这个示例代码测试begin ... end;行为的错误相同:
Connection con = connectionProvider.getConnection()
con.prepareStatement("CREATE TABLE test (id INT NOT NULL)").execute()
con.prepareStatement("INSERT INTO test SELECT 1 FROM dual").execute()
con.prepareStatement("BEGIN INSERT INTO test SELECT 2 FROM dual; END;").execute()
Run Code Online (Sandbox Code Playgroud)
我得到的错误:
Syntax error in SQL statement "BEGIN INSERT[*] INTO TEST SELECT 2 FROM DUAL; END; "; SQL statement:
BEGIN INSERT INTO test SELECT 2 FROM dual; END; [42000-167]
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:begin ... end;H2支持哪些块?如果是,上面的代码可能有什么问题?
谢谢.
| 归档时间: |
|
| 查看次数: |
7243 次 |
| 最近记录: |