Northwind Database (Document! X Sample)
AdventureWorks Database / dbo Schema / dbo.uspLogError Stored Procedure
In This Topic
    dbo.uspLogError Stored Procedure
    In This Topic
    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.
    Properties
    Creation Date27/10/2017 14:33
    Encrypted
    Ansi Nulls
    Parameters
    ParameterDirectionDescriptionData TypeSize
    OutOutput parameter for the stored procedure uspLogError. Contains the ErrorLogID value corresponding to the row inserted by uspLogError in the ErrorLog table.Integer4
    Return Value Integer4
    Objects that depend on dbo.uspLogError
     Database ObjectObject TypeDescriptionDep Level
    dVendor triggerdVendorTriggerINSTEAD OF DELETE trigger which keeps Vendors from being deleted.1
    iduSalesOrderDetail triggeriduSalesOrderDetailTriggerAFTER INSERT, DELETE, UPDATE trigger that inserts a row in the TransactionHistory table, updates ModifiedDate in SalesOrderDetail and updates the SalesOrderHeader.SubTotal column.3
    iPurchaseOrderDetail triggeriPurchaseOrderDetailTriggerAFTER INSERT trigger that inserts a row in the TransactionHistory table and updates the PurchaseOrderHeader.SubTotal column.3
    iWorkOrder triggeriWorkOrderTriggerAFTER INSERT trigger that inserts a row in the TransactionHistory table.1
    Purchasing.ProductVendor tablePurchasing.ProductVendorTable

    Vendors are added to the table before any POs are processed.

    1
    Purchasing.PurchaseOrderDetail tablePurchasing.PurchaseOrderDetailTableIndividual products associated with a specific purchase order. See PurchaseOrderHeader.2
    Purchasing.PurchaseOrderHeader tablePurchasing.PurchaseOrderHeaderTableGeneral purchase order information. See PurchaseOrderDetail.1
    Sales.SalesOrderDetail tableSales.SalesOrderDetailTableIndividual products associated with a specific sales order. See SalesOrderHeader.2
    Sales.SalesOrderHeader tableSales.SalesOrderHeaderTableGeneral sales order information.1
    Sales.SalesOrderHeaderSalesReason tableSales.SalesOrderHeaderSalesReasonTableCross-reference table mapping sales orders to sales reason codes.3
    dbo.ufnGetContactInformation functiondbo.ufnGetContactInformationUser Defined FunctionTable value function returning the first name, last name, job title and contact type for a given contact.1
    uPurchaseOrderDetail triggeruPurchaseOrderDetailTriggerAFTER UPDATE trigger that inserts a row in the TransactionHistory table, updates ModifiedDate in PurchaseOrderDetail and updates the PurchaseOrderHeader.SubTotal column.3
    uPurchaseOrderHeader triggeruPurchaseOrderHeaderTriggerAFTER UPDATE trigger that updates the RevisionNumber and ModifiedDate columns in the PurchaseOrderHeader table.2
    uSalesOrderHeader triggeruSalesOrderHeaderTriggerAFTER UPDATE trigger that updates the RevisionNumber and ModifiedDate columns in the SalesOrderHeader table.Updates the SalesYTD column in the SalesPerson and SalesTerritory tables.3
    HumanResources.uspUpdateEmployeeHireInfo procedureHumanResources.uspUpdateEmployeeHireInfoStored ProcedureUpdates the Employee table and inserts a new row in the EmployeePayHistory table with the values specified in the input parameters.2
    HumanResources.uspUpdateEmployeeLogin procedureHumanResources.uspUpdateEmployeeLoginStored ProcedureUpdates the Employee table with the values specified in the input parameters for the given BusinessEntityID.2
    HumanResources.uspUpdateEmployeePersonalInfo procedureHumanResources.uspUpdateEmployeePersonalInfoStored ProcedureUpdates the Employee table with the values specified in the input parameters for the given EmployeeID.2
    uWorkOrder triggeruWorkOrderTriggerAFTER UPDATE trigger that inserts a row in the TransactionHistory table, updates ModifiedDate in the WorkOrder table.1
    Purchasing.Vendor tablePurchasing.VendorTableCompanies from whom Adventure Works Cycles purchases parts or other goods.1
    Sales.vSalesPersonSalesByFiscalYears viewSales.vSalesPersonSalesByFiscalYearsViewUses PIVOT to return aggregated sales information for each sales representative.3
    Purchasing.vVendorWithAddresses viewPurchasing.vVendorWithAddressesViewVendor (company) names and addresses .2
    Purchasing.vVendorWithContacts viewPurchasing.vVendorWithContactsViewVendor (company) names and the names of vendor employees to contact.1
    Production.WorkOrder tableProduction.WorkOrderTableManufacturing work orders.1
    Production.WorkOrderRouting tableProduction.WorkOrderRoutingTableWork order details.1
    Objects that dbo.uspLogError depends on
     Database ObjectObject TypeDescriptionDep Level
    dbo.ErrorLog tabledbo.ErrorLogTableAudit table tracking errors in the the AdventureWorks database that are caught by the CATCH block of a TRY...CATCH construct. Data is inserted by stored procedure dbo.uspLogError when it is executed from inside the CATCH block of a TRY...CATCH construct.3
    dbo.uspPrintError proceduredbo.uspPrintErrorStored ProcedurePrints error information 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 printing any error information.2
    Procedure Source Code
    -- 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;
    
    See Also