SGBD oracle是否总是以相同的顺序执行匿名plsql的查询?

时间:2015-04-21 16:58:31

标签: java oracle jdbc sequences

这是我的代码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次执行的相同值吗? 谢谢

1 个答案:

答案 0 :(得分:0)

我已经看到了我正在创建的错误。 事实上,由于我使用静态属性来收集各种事务的查询并通过匿名plsql将它们发送到SGBD oracle,所以所有查询都不在同一个事务中。

所以我将静态变量更改为简单和公共变量,通过类的实例评估查询的收集器,以便事务的所有查询应始终一次发送并以相同的顺序执行。