У меня есть хранимая процедура, которая обрабатывает однорядную транзакцию. Я хотел бы отловить любые ошибки и вставить в таблицу 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;
Если у кого-нибудь есть какие-либо предложения или примеры, как это можно улучшить или хороший способ сообщить об этих ошибках разработчикам, пожалуйста, сообщите об этом. Спасибо.