- -- 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.