Поиск

L2AVADON

СТАТЬИ

DML и обработка исключений
ГлавнаяЯзык PL/SQLВведение в PL/SQLИзменение данных → DML и обработка исключений

При возникновении исключения в PL/SQL-блоке Oracle не производит отмену (откат) изменений, внесенных командами DML этого блока. Выбор поведения приложения в подобной ситуации осуществляет тот, кто управляет логикой транзакций приложения, то есть сам програм­мист. При этом необходимо учитывать следующие соображения:

       Если ваш блок является автономной транзакцией (мы поговорим о них чуть позже в этой же главе), то при возникновении исключе­ния необходимо выполнить откат или фиксацию изменений (обыч­но выполняется откат).

       Для ограничения области отката можно использовать точки сохра­нения. Другими словами, можно выполнить откат изменений вплоть до некоторой точки сохранения, сохранив тем самым часть изменений, выполненных в рамках сеанса (подробно о точках со­хранения мы также поговорим далее в этой главе).

       Если исключение распространяется за пределы самого внешнего блока (то есть остается необработанным), то в большинстве сред вы­полнения PL/SQL, таких как SQL*Plus, автоматически произво­дится безусловный (unqualified) откат, и все сделанные ранее изме­нения отменяются.