1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
--procédure handle error
PROCEDURE sp_i_ts_erreur_err
AS
BEGIN
SET NOCOUNT, XACT_ABORT ON;
BEGIN TRY
DECLARE @v_erreur_numero int = ERROR_NUMBER()
,@v_erreur_severite int = ERROR_SEVERITY()
,@v_erreur_etat int = ERROR_STATE()
,@v_erreur_procedure nvarchar(126) = ERROR_PROCEDURE()
,@v_erreur_ligne int = ERROR_LINE()
,@v_erreur_message nvarchar(2048) = ERROR_MESSAGE()
,@v_date datetime2(0) = getdate()
,@v_user nvarchar(128) = system_user;
EXEC sp_executesql N'INSERT INTO ts_erreur_err(err_user,err_date,err_numero,err_etat,err_severite,err_ligne,err_procedure,err_message) VALUES (@user,@date,@numero,@etat,@severite,@ligne,@procedure,@message)
',N'@user nvarchar(128),@date datetime2(0),@numero int,@etat int,@severite int,@ligne int,@procedure nvarchar(128),@message
nvarchar(2048)',@v_user,@v_date,@v_erreur_numero,@v_erreur_etat,@v_erreur_severite,@v_erreur_ligne,@v_erreur_procedure,@v_erreur_message
END TRY
BEGIN CATCH
;THROW
END CATCH
END
-- procédure modèle
CREATE PROCEDURE ...
AS
...
BEGIN TRY
...
BEGIN TRANSACTION;
...
COMMIT;
...
END TRY
BEGIN CATCH
IF XACT_STATE()<>0
BEGIN
ROLLBACK
execute sp_i_ts_erreur_err
END
;THROW
END TRY |
Partager