51 lines
1.7 KiB
Transact-SQL
51 lines
1.7 KiB
Transact-SQL
|
|
CREATE PROCEDURE [dbo].[USP_RethrowError]
|
|
|
|
AS
|
|
|
|
/*
|
|
Create the stored procedure to generate an error using
|
|
RAISERROR. The original error information is used to
|
|
construct the msg_str for RAISERROR.
|
|
*/
|
|
|
|
-- Return if there is no error information to retrieve.
|
|
IF ERROR_NUMBER() IS NULL
|
|
RETURN;
|
|
|
|
DECLARE
|
|
@ErrorMessage NVARCHAR(4000),
|
|
@ErrorNumber INT,
|
|
@ErrorSeverity INT,
|
|
@ErrorState INT,
|
|
@ErrorLine INT,
|
|
@ErrorProcedure NVARCHAR(200);
|
|
|
|
-- Assign variables to error-handling functions that
|
|
-- capture information for RAISERROR.
|
|
SELECT
|
|
@ErrorNumber = ERROR_NUMBER(),
|
|
@ErrorSeverity = ERROR_SEVERITY(),
|
|
@ErrorState = ERROR_STATE(),
|
|
@ErrorLine = ERROR_LINE(),
|
|
@ErrorProcedure = ISNULL(ERROR_PROCEDURE(), '-');
|
|
|
|
-- Building the message string that will contain original
|
|
-- error information.
|
|
SELECT @ErrorMessage =
|
|
N'Error %d, Level %d, State %d, Procedure %s, Line %d, ' +
|
|
'Message: '+ ERROR_MESSAGE();
|
|
|
|
-- Raise an error: msg_str parameter of RAISERROR will contain
|
|
-- the original error information.
|
|
RAISERROR
|
|
(
|
|
@ErrorMessage,
|
|
@ErrorSeverity,
|
|
1,
|
|
@ErrorNumber, -- parameter: original error number.
|
|
@ErrorSeverity, -- parameter: original error severity.
|
|
@ErrorState, -- parameter: original error state.
|
|
@ErrorProcedure, -- parameter: original error procedure name.
|
|
@ErrorLine -- parameter: original error line number.
|
|
); |