Лучший способ вставить информацию об ошибке из блока catch в таблицу для хранимой процедуры? - PullRequest
0 голосов
/ 04 сентября 2018

У меня есть хранимая процедура, которая обрабатывает однорядную транзакцию. Я хотел бы отловить любые ошибки и вставить в таблицу Error. Затем используйте ночной процесс для передачи информации из таблицы ошибок разработчикам. Мне интересно, что является лучшей практикой для этой ситуации? Есть ли хороший пример того, как справиться с этим? Вот мой код и идея о том, что у меня есть на данный момент:

CREATE PROCEDURE [dbo].[InsertBuilding] 
    @Status BIT = 0,
    @Number CHAR(4) = NULL,
    @Name VARCHAR(50) = NULL,
    @Contact VARCHAR(50) = NULL,
    @Address1 VARCHAR(50) = NULL,
    @Address2 VARCHAR(50) = NULL,
    @City VARCHAR(50) = NULL,
    @State CHAR(2) = NULL,
    @Zip CHAR(5) = NULL,
    @Phone CHAR(10) = NULL,
    @ActionID UNIQUEIDENTIFIER = NULL
AS
    SET NOCOUNT ON
    SET XACT_ABORT ON
    BEGIN
        BEGIN TRY
            INSERT INTO Buildings (
                Status, Number, Name,
                Contact, Address1, Address2,
                City, State, Zip, Phone,
                ActionDt, ActionID
            ) 
            OUTPUT INSERTED.RecID
            VALUES (
                @Status,@Number,@Name,
                @Contact,@Address1,@Address2,
                @City,@State,@Zip,@PhonePri,
                CURRENT_TIMESTAMP,@ActionID
            )
        END TRY
        BEGIN CATCH
            INSERT INTO dbo.ERROR(
                ErrorNumber, 
                ErrorSeverity, 
                ErrorState, 
                ErrorProcedure, 
                ErrorLine, 
                ErrorMessage, 
                ErrorDateTime
            )VALUES(
                ERROR_NUMBER(), 
                ERROR_SEVERITY(), 
                ERROR_STATE(), 
                ERROR_PROCEDURE(), 
                ERROR_LINE(), 
                ERROR_MESSAGE(), 
                CURRENT_TIMESTAMP()
            )
        END CATCH
    END;

Если у кого-нибудь есть какие-либо предложения или примеры, как это можно улучшить или хороший способ сообщить об этих ошибках разработчикам, пожалуйста, сообщите об этом. Спасибо.

...