SGBD oracle 是否总是以相同的顺序执行匿名 plsql 的查询?
Does the SGBD oracle always execute the queries of an anonymous plsql in the same order?
这是我的代码的一部分 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
之间哪个过程更好
我想知道如何管理执行处理许多序列的事务的会话。
我发现在事务中使用许多序列会导致 oracle 不会将错误发回给用户。他们有时会在 sequence.nextval 上执行 2 次获得相同的值吗?
谢谢
我已经看到我正在创建的错误。
事实上,所有的查询都不在同一个事务中,因为我使用的是一个静态属性,它收集各种事务的查询并通过匿名 plsql 将它们发送到 SGBD oracle。
所以我将静态变量更改为简单的 public 一个,通过 class 的实例评估查询的收集器,以便始终发送事务的所有查询一次并以相同的顺序执行。
这是我的代码的一部分 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
之间哪个过程更好我想知道如何管理执行处理许多序列的事务的会话。 我发现在事务中使用许多序列会导致 oracle 不会将错误发回给用户。他们有时会在 sequence.nextval 上执行 2 次获得相同的值吗? 谢谢
我已经看到我正在创建的错误。 事实上,所有的查询都不在同一个事务中,因为我使用的是一个静态属性,它收集各种事务的查询并通过匿名 plsql 将它们发送到 SGBD oracle。
所以我将静态变量更改为简单的 public 一个,通过 class 的实例评估查询的收集器,以便始终发送事务的所有查询一次并以相同的顺序执行。