Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
зеленый админ 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] Ответить | Цитировать Сообщить модератору |
зеленый админ Member Откуда: Сообщений: 247 |
Версия сервера - 2008R2 |
19 июн 13, 12:21 [14452963] Ответить | Цитировать Сообщить модератору |
Сергей Викт. 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] Ответить | Цитировать Сообщить модератору |
Сергей Викт. Member Откуда: Москва Сообщений: 888 |
[quot BOL] Ошибка возвращается вызывающему объекту, если инструкция RAISERROR вызывается: •за пределами области любого блока TRY; •с уровнем серьезности, равным 10 и менее в блоке TRY; •с уровнем серьезности, равным 20 и выше, что приводит к обрыву соединения с базой данных. [/qout] Тут хорошо всё описано |
||
19 июн 13, 12:29 [14453033] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |