-- Drop Function if exists
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'dbo.fnGetDetailedErrorMessage'))
DROP FUNCTION dbo.fnGetDetailedErrorMessage;
GO
/*=============================================
Author:
Yuri Abele
Changes:
11.06.2013 - Yuri Abele - initial
Description:
Function to format last error as detailed message
Usage: Log last error
BEGIN TRY
DECLARE @i INT;
PRINT 'Try division by zero'
SET @i = 1/0;
PRINT 'After'
END TRY
BEGIN CATCH
-- Display error
PRINT dbo.fnGetDetailedErrorMessage();
IF @@TRANCOUNT > 0 ROLLBACK;
END CATCH;
=============================================*/
CREATE FUNCTION dbo.fnGetDetailedErrorMessage()
RETURNS NVARCHAR(MAX)
AS
BEGIN
RETURN ('ERROR:
ErrorNumber = ' + CAST(ERROR_NUMBER() AS VARCHAR(20)) + ',
ErrorSeverity = ' + CAST(ERROR_SEVERITY() AS VARCHAR(20)) + ',
ErrorState = ' + CAST(ERROR_STATE() AS VARCHAR(20)) + ',
ErrorProcedure = "' + ISNULL(ERROR_PROCEDURE(), '') + ',
ErrorLine = ' + CAST(ERROR_LINE() AS VARCHAR(20)) + ',
ErrorMessage = "' + ERROR_MESSAGE() + '"' + CHAR(13) + CHAR(10));
END;
GO
BEGIN TRY
DECLARE @i INT;
PRINT 'Try division by zero'
SET @i = 1/0;
PRINT 'After'
END TRY
BEGIN CATCH
-- Display error
PRINT dbo.fnGetDetailedErrorMessage();
IF @@TRANCOUNT > 0 ROLLBACK;
END CATCH;
Results of execution:
No comments:
Post a Comment
Note: only a member of this blog may post a comment.