Как определить, не получились ли какие-либо дочерние процедуры?

Rajesh Gawade спросил: 13 июня 2018 в 05:10 в: sql

В SQL Server есть одна хранимая процедура мастера, а другая - несколько дочерних процедур.

При вызове дочерней процедуры в мастер, если какая-либо дочерняя процедура потерпит неудачу, так как мы можем ее идентифицировать?

Этот вопрос задал мне интервью.


1 ответ

Osama Saleem ответил: 13 июня 2018 в 06:46

Вложите вложенную процедуру в блок catch try. В следующем примере, если некоторая ошибка генерируется пакетом обновления 2 при выполнении SP1, ошибка будет зафиксирована в блоке catch, и сообщение об ошибке будет отображаться соответствующим образом. Дополнительную информацию см. В статье ERROR_MESSAGE (Transact-SQL).

CREATE PROC [dbo].[SP1]
AS
BEGIN
BEGIN TRY  
    EXEC SP2 
END TRY
BEGIN CATCH
    SELECT ERROR_MESSAGE() AS ErrorMessage; -- capture error
END CATCH
END

Дополнительное видео по вопросу: Как определить, не получились ли какие-либо дочерние процедуры?

Видеокурс по SQL Essential. Урок 8. Хранимые процедуры. Пользовательские функции

Триггеры и хранимые процедуры в MS SQL Server (Triggers and stored procedures)

Использование хранимых процедур и функций в SQL Server