Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Statement-termination vs Batch-abortion  [new]
зеленый админ
Member

Откуда:
Сообщений: 247
Ситуация:
Есть 4 stored процедуры A, B, С, D

Выглядят они так:
A:
  BEGIN TRY
    exec B;
  END TRY
  BEGIN CATCH
    
  END CATCH;


B:
    exec C;
    exec D;


Теперь допустим, что в C случился user defined raiserror('bla-bla', 16, 1);

Вопрос: D выполнится или нет? И почему (желательно с ссылками)
19 июн 13, 12:19    [14452932]     Ответить | Цитировать Сообщить модератору
 Re: Statement-termination vs Batch-abortion  [new]
зеленый админ
Member

Откуда:
Сообщений: 247
Версия сервера - 2008R2
19 июн 13, 12:21    [14452963]     Ответить | Цитировать Сообщить модератору
 Re: Statement-termination vs Batch-abortion  [new]
Сергей Викт.
Member

Откуда: Москва
Сообщений: 888
create proc c1 as
raiserror('bla-bla', 16, 1)

go
create proc d1 as
select 'D1 executed'
go
create proc b1 as
exec c1
exec d1
go

create proc a1 as
begin try
exec b1
end try
begin catch
select 'nea'
end catch
go


exec a1
19 июн 13, 12:24    [14453000]     Ответить | Цитировать Сообщить модератору
 Re: Statement-termination vs Batch-abortion  [new]
Сергей Викт.
Member

Откуда: Москва
Сообщений: 888
зеленый админ
И почему (желательно с ссылками)

[quot BOL]
Ошибка возвращается вызывающему объекту, если инструкция RAISERROR вызывается:
•за пределами области любого блока TRY;

•с уровнем серьезности, равным 10 и менее в блоке TRY;

•с уровнем серьезности, равным 20 и выше, что приводит к обрыву соединения с базой данных.

[/qout]

Тут хорошо всё описано
19 июн 13, 12:29    [14453033]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить