2017-02-02 4 views
0

저장 프로 시저에서 발생한 예외를 저장하는 데 문제가 있습니다.출력 변수로 저장 프로 시저에서 예외 발생 가져 오기

예를 들어 나는 두 개의 저장 프로 시저 P_AddP_GetAdd을 가지고 있습니다.
P_Add은 프로 시저 P_GetAddP_Add을 실행하는 것처럼 0으로 나눌 때 예외를 반환합니다.
P_Add에 의해 발생한 예외를 P_GetAdd이 실행 된 코드로 되돌리고 싶습니다.
P_Add excetets 제공되지 않은 매개 변수는 오류입니다. 결과를 얻도록 도와주세요. 감사합니다. . P_add 저장 프로 시저를 실행할 때

create procedure P_add 
(
    @ErrorMessage varchar (100) OUTPUT 
) 
as 
Declare @a int 
Declare @b int 
declare @c int 

set @a = 1 
set @b = 0 

Begin try 
    SET @c = @a/@b 
end try 
begin catch 
    SET @ErrorMessage = ERROR_MESSAGE(); 
End catch 

create procedure P_getADD 
(
@ErrorMessage1 varchar (100) OUTPUT 
) 
AS 

IF EXISTS (
     SELECT * 
     FROM sysobjects 
     WHERE id = object_id(N'[dbo].[P_add]') 
     AND OBJECTPROPERTY(id, N'IsProcedure') = 1 
     ) 
BEGIN 
    EXEC P_add @ErrorMessage = @ErrorMessage1 
END 

답변

1

내가 질문을 이해 가정하면, output@ErrorMessage1을 표시해야합니다 솔루션을 제공하는

CREATE PROCEDURE P_getADD 
(
    @ErrorMessage1 varchar (100) OUTPUT 
) 
AS 

IF EXISTS (
     SELECT * 
     FROM sysobjects 
     WHERE id = object_id(N'[dbo].[P_add]') 
     AND OBJECTPROPERTY(id, N'IsProcedure') = 1 
     ) 
BEGIN 
    EXEC P_add @ErrorMessage1 OUTPUT 
END 
+0

감사합니다. 그러나 나는 RAISERROR()를 사용하여 부모 저장 프로 시저에 오류를 던질 수 있다고 생각합니다. –

+0

대답은 게시 된 질문에 대한 것입니다. 이 답변이 정확하다면, 다른 사람들이 문제가 해결되었음을 알 수 있도록 그것을 승인 된 것으로 표시하십시오. 더 나은 답변을 찾았다면 게시하고 수락하십시오. –