Как получить сообщение RaiseError о процедуре в другой процедуре
У меня две процедуры PROC_A
а также PROC_B
,
В обеих процедурах транзакции управляются.
PROC_B
выдает ошибку при вызове RAISEERROR
и передает сообщение в определенном состоянии
RAISERROR ('Initiator is Inactive', 16, 1, 'Approve Transaction');
Я исполняю (звоню) PROC_B
в PROC_A
, Теперь я хочу получить сообщение об ошибке PROC_B
в PROC_A
,
Как я могу это сделать?
1 ответ
Решение
Попробуй это:
CREATE PROCEDURE dbo.TestA
AS
BEGIN
RAISERROR ('Initiator is Inactive', 16, 1, 'Approve Transaction');
END;
GO
CREATE PROCEDURE dbo.TestB
AS
BEGIN
BEGIN TRY
EXEC dbo.TestA;
END TRY
BEGIN CATCH
SELECT ERROR_MESSAGE();
END CATCH
END;
GO
EXEC dbo.TestB;
GO
DROP PROCEDURE dbo.TestB;
DROP PROCEDURE dbo.TestA;