Назад | Перейти на главную страницу

Есть ли способ выполнить откат внутри хранимой процедуры SQL Server 2012?

В хранимой процедуре вызывается несколько операторов sql «обновления». Если какой-либо из них не работает, я хочу откатить ранее выполненные операторы обновления в той же хранимой процедуре. Есть способ?

Вы можете обернуть все это в начало / конец транса. Цитировать из MSDN:

BEGIN TRANSACTION представляет собой точку, в которой данные, на которые ссылается соединение, логически и физически согласованы. При обнаружении ошибок все изменения данных, сделанные после BEGIN TRANSACTION, можно откатить, чтобы вернуть данные в это известное состояние согласованности. Каждая транзакция длится до тех пор, пока она не завершится без ошибок и не будет выдана команда COMMIT TRANSACTION, чтобы изменения стали постоянной частью базы данных, или пока не обнаруживаются ошибки, и все изменения стираются с помощью оператора ROLLBACK TRANSACTION.

В ответ на ваш комментарий, объединив это с вложенным Попробуй поймать может сработать для вас.