这是我的代码java的一部分,在匿名plsql块中构造一个函数:
*String p ="FUNCTION get_result RETURN varchar2 AS "
+"BEGIN "
+"sql_error:='ok';"
+query1+";"
+query2+";"
+query3+";"
+"COMMIT;"
+"RETURN sql_error; "
+"EXCEPTION "
+"when others then "
+"ROLLBACK;"
+"end;";*
其中查询1,2和3是sql查询;有时query2不会被执行,这不会产生事务错误,并且查询1和3并提交。我想知道它是如何可能的,我该如何纠正它。 我还想知道调用匿名阻止语句和 statement.addBatch
之间的哪个程序更好我想知道执行处理多个序列的事务的管理会话。 我发现在事务中使用许多seauences导致oracle不会发回给用户的错误。他们有时在sequence.nextval上获得2次执行的相同值吗? 谢谢
答案 0 :(得分:0)
我已经看到了我正在创建的错误。 事实上,由于我使用静态属性来收集各种事务的查询并通过匿名plsql将它们发送到SGBD oracle,所以所有查询都不在同一个事务中。
所以我将静态变量更改为简单和公共变量,通过类的实例评估查询的收集器,以便事务的所有查询应始终一次发送并以相同的顺序执行。