Difference between revisions of "Dbo.uspLogError (procedure)"
(New page: == wikibot == {| border="1" cellpadding="5" cellspacing="0" style="border-collapse:collapse" |- | '''procedure | dbo.uspLogError |- |} <pre> -- uspLogError logs error information in the ...) |
|||
Line 9: | Line 9: | ||
<pre> | <pre> | ||
+ | -- uspLogError logs error information in the ErrorLog table about the | ||
+ | -- error that caused execution to jump to the CATCH block of a | ||
+ | -- TRY...CATCH construct. This should be executed from within the scope | ||
+ | -- of a CATCH block otherwise it will return without inserting error | ||
+ | -- information. | ||
+ | CREATE PROCEDURE [dbo].[uspLogError] | ||
+ | @ErrorLogID [int] = 0 OUTPUT -- contains the ErrorLogID of the row inserted | ||
+ | AS -- by uspLogError in the ErrorLog table | ||
+ | BEGIN | ||
+ | SET NOCOUNT ON; | ||
+ | |||
+ | -- Output parameter value of 0 indicates that error | ||
+ | -- information was not logged | ||
+ | SET @ErrorLogID = 0; | ||
+ | |||
+ | BEGIN TRY | ||
+ | -- Return if there is no error information to log | ||
+ | IF ERROR_NUMBER() IS NULL | ||
+ | RETURN; | ||
+ | |||
+ | -- Return if inside an uncommittable transaction. | ||
+ | -- Data insertion/modification is not allowed when | ||
+ | -- a transaction is in an uncommittable state. | ||
+ | IF XACT_STATE() = -1 | ||
+ | BEGIN | ||
+ | PRINT 'Cannot log error since the current transaction is in an uncommittable state. ' | ||
+ | + 'Rollback the transaction before executing uspLogError in order to successfully log error information.'; | ||
+ | RETURN; | ||
+ | END | ||
+ | |||
+ | INSERT [dbo].[ErrorLog] | ||
+ | ( | ||
+ | [UserName], | ||
+ | [ErrorNumber], | ||
+ | [ErrorSeverity], | ||
+ | [ErrorState], | ||
+ | [ErrorProcedure], | ||
+ | [ErrorLine], | ||
+ | [ErrorMessage] | ||
+ | ) | ||
+ | VALUES | ||
+ | ( | ||
+ | CONVERT(sysname, CURRENT_USER), | ||
+ | ERROR_NUMBER(), | ||
+ | ERROR_SEVERITY(), | ||
+ | ERROR_STATE(), | ||
+ | ERROR_PROCEDURE(), | ||
+ | ERROR_LINE(), | ||
+ | ERROR_MESSAGE() | ||
+ | ); | ||
+ | |||
+ | -- Pass back the ErrorLogID of the row inserted | ||
+ | SET @ErrorLogID = @@IDENTITY; | ||
+ | END TRY | ||
+ | BEGIN CATCH | ||
+ | PRINT 'An error occurred in stored procedure uspLogError: '; | ||
+ | EXECUTE [dbo].[uspPrintError]; | ||
+ | RETURN -1; | ||
+ | END CATCH | ||
+ | END; | ||
+ | </pre> | ||
+ | |||
+ | == automatically generated == | ||
+ | |||
+ | {| border="1" cellpadding="5" cellspacing="0" style="border-collapse:collapse" | ||
+ | |- | ||
+ | | '''procedure | ||
+ | | dbo.uspLogError | ||
+ | |- | ||
+ | |||
+ | | '''Description | ||
+ | | Logs error information in the ErrorLog table about the error that caused execution to jump to the CATCH block of a TRY...CATCH construct. Should be executed from within the scope of a CATCH block otherwise it will return without inserting error information. | ||
+ | |- | ||
+ | |||
+ | |} | ||
+ | |||
+ | <pre> | ||
+ | |||
-- uspLogError logs error information in the ErrorLog table about the | -- uspLogError logs error information in the ErrorLog table about the | ||
-- error that caused execution to jump to the CATCH block of a | -- error that caused execution to jump to the CATCH block of a |
Revision as of 00:27, 27 November 2009
wikibot
procedure | dbo.uspLogError |
-- uspLogError logs error information in the ErrorLog table about the -- error that caused execution to jump to the CATCH block of a -- TRY...CATCH construct. This should be executed from within the scope -- of a CATCH block otherwise it will return without inserting error -- information. CREATE PROCEDURE [dbo].[uspLogError] @ErrorLogID [int] = 0 OUTPUT -- contains the ErrorLogID of the row inserted AS -- by uspLogError in the ErrorLog table BEGIN SET NOCOUNT ON; -- Output parameter value of 0 indicates that error -- information was not logged SET @ErrorLogID = 0; BEGIN TRY -- Return if there is no error information to log IF ERROR_NUMBER() IS NULL RETURN; -- Return if inside an uncommittable transaction. -- Data insertion/modification is not allowed when -- a transaction is in an uncommittable state. IF XACT_STATE() = -1 BEGIN PRINT 'Cannot log error since the current transaction is in an uncommittable state. ' + 'Rollback the transaction before executing uspLogError in order to successfully log error information.'; RETURN; END INSERT [dbo].[ErrorLog] ( [UserName], [ErrorNumber], [ErrorSeverity], [ErrorState], [ErrorProcedure], [ErrorLine], [ErrorMessage] ) VALUES ( CONVERT(sysname, CURRENT_USER), ERROR_NUMBER(), ERROR_SEVERITY(), ERROR_STATE(), ERROR_PROCEDURE(), ERROR_LINE(), ERROR_MESSAGE() ); -- Pass back the ErrorLogID of the row inserted SET @ErrorLogID = @@IDENTITY; END TRY BEGIN CATCH PRINT 'An error occurred in stored procedure uspLogError: '; EXECUTE [dbo].[uspPrintError]; RETURN -1; END CATCH END;
automatically generated
procedure | dbo.uspLogError |
Description | Logs error information in the ErrorLog table about the error that caused execution to jump to the CATCH block of a TRY...CATCH construct. Should be executed from within the scope of a CATCH block otherwise it will return without inserting error information. |
-- uspLogError logs error information in the ErrorLog table about the -- error that caused execution to jump to the CATCH block of a -- TRY...CATCH construct. This should be executed from within the scope -- of a CATCH block otherwise it will return without inserting error -- information. CREATE PROCEDURE [dbo].[uspLogError] @ErrorLogID [int] = 0 OUTPUT -- contains the ErrorLogID of the row inserted AS -- by uspLogError in the ErrorLog table BEGIN SET NOCOUNT ON; -- Output parameter value of 0 indicates that error -- information was not logged SET @ErrorLogID = 0; BEGIN TRY -- Return if there is no error information to log IF ERROR_NUMBER() IS NULL RETURN; -- Return if inside an uncommittable transaction. -- Data insertion/modification is not allowed when -- a transaction is in an uncommittable state. IF XACT_STATE() = -1 BEGIN PRINT 'Cannot log error since the current transaction is in an uncommittable state. ' + 'Rollback the transaction before executing uspLogError in order to successfully log error information.'; RETURN; END INSERT [dbo].[ErrorLog] ( [UserName], [ErrorNumber], [ErrorSeverity], [ErrorState], [ErrorProcedure], [ErrorLine], [ErrorMessage] ) VALUES ( CONVERT(sysname, CURRENT_USER), ERROR_NUMBER(), ERROR_SEVERITY(), ERROR_STATE(), ERROR_PROCEDURE(), ERROR_LINE(), ERROR_MESSAGE() ); -- Pass back the ErrorLogID of the row inserted SET @ErrorLogID = @@IDENTITY; END TRY BEGIN CATCH PRINT 'An error occurred in stored procedure uspLogError: '; EXECUTE [dbo].[uspPrintError]; RETURN -1; END CATCH END;