別のストアドプロシージャを呼び出すストアドプロシージャがあります。SP2には、try / transaction / catch / rollback/raiserrorがあります。SP2でエラーが発生した場合、SP1を介して呼び出し元にバブルアップしますか、それともtry / catchでSP2への呼び出しをネストする必要がありますか?後者の場合、SP1を起動/終了するときに、SP2からのエラーの「スタックトレース」を強制終了しないようにするにはどうすればよいですか?
-これにより、SP2からのエラーが発生し、SP1も終了しますか?
EXEC dbo.storedProc2 @someParameter = @someValue
-または、これを行う必要がありますか?
BEGIN TRY
EXEC dbo.storedProc2 @someParameter = @someValue
END TRY
BEGIN CATCH
-- this is what I normally do in a simple catch/raise scenario:
-- will it kill the error stack?
DECLARE @ErrMsg VARCHAR(4000), @ErrSeverity INT, @ErrState INT, @ErrLine INT
SELECT @ErrMsg = ERROR_MESSAGE() + ' Line %d',
@ErrSeverity = ERROR_SEVERITY(),
@ErrState = ERROR_STATE(),
@ErrLine = ERROR_LINE()
RAISERROR(@ErrMsg, @ErrSeverity, @ErrState, @ErrLine)
END CATCH