Это часть моего кода Java построения функции в анонимном PLSQL блока:Оказывает ли оракул SGBD запросы анонимного 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 не отправляет обратно пользователю. Они иногда получают одинаковое значение для 2 исполнений на sequence.nextval? спасибо
Это функция, а не анонимный блок; но да для обоих операторов в PL/SQL-блоке всегда будут выполняться в том же порядке. Ваш запрос2 всегда выполняется, если функция вызывается с этим определением. (Это действительно странный дизайн, BTW). Не зная ничего о операторах или данных, или когда вызывается этот код или функция, невозможно сказать, почему вам кажется, что он не выполняется. –
Может ли Oracle использовать много потоков для выполнения процедуры? – ValerieMT
Вы имеете в виду выполнение одной и той же процедуры одновременно с нескольких клиентских сеансов? Да. Или использовать потоки внутри, выполняя один экземпляр? Я так думаю, возможно, в разных масштабах на разных платформах. Каждый вызов будет логически неповрежденным, хотя операторы в блоке будут выполняться в указанном вами порядке. Вы могли видеть, по-видимому, странные вещи от одновременных вызовов, в зависимости от того, что делает процедура, и если/когда она совершает, например. –