Оракул SGBD всегда выполняет запросы анонимного plsql в том же порядке?

Это часть моего кода 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? благодарю вас

1 ответ

Решение

Я видел ошибку, которую создавал. Фактически, все запросы не были в одной транзакции, потому что я использовал статический атрибут, который собирал запросы различных транзакций и отправлял их оракулу SGBD через анонимный plsql.

поэтому я изменил статическую переменную на простую и общедоступную, сборщик запросов, оцениваемых с помощью экземпляра класса, чтобы все запросы транзакции всегда отправлялись сразу и выполнялись в одном и том же порядке.

Другие вопросы по тегам