Essayez et INTERCEPTEZ ces erreurs !

Écrire des fonctions et des procédures stockées dans SQL Server

Meghan Kwartler

IT Consultant

Gérer les erreurs ou pas

Qu'est-ce que la gestion des erreurs ?

  • Anticiper, détecter et résoudre les erreurs
  • Maintient le déroulement normal de l'exécution
  • Intégrée dès la conception

Sans gestion des erreurs, que se passe-t-il ?

  • Arrêt brutal ou exécution bloquée
  • Messages génériques sans contexte utile
Écrire des fonctions et des procédures stockées dans SQL Server

Passons à TRY

ALTER PROCEDURE dbo.cusp_TripSummaryCreate
  @TripDate nvarchar(30),
  @RideHrs numeric,

@ErrorMsg nvarchar(max) = null OUTPUT
AS BEGIN BEGIN TRY INSERT INTO TripSummary (Date, TripHours) VALUES (@TripDate, @RideHrs) END TRY ........
Écrire des fonctions et des procédures stockées dans SQL Server

Il est temps de CATCH

ALTER PROCEDURE dbo.cusp_TripSummaryCreate
  @TripDate nvarchar(30),
  @RideHrs numeric, 
  @ErrorMsg nvarchar(max) = null OUTPUT
AS
BEGIN
  BEGIN TRY
      INSERT INTO TripSummary (Date, TripHours)
      VALUES (@TripDate, @RideHrs)
  END TRY
  BEGIN CATCH
      SET @ErrorMsg = 'Error_Num: ' +
      CAST (ERROR_NUMBER() AS varchar) +
      ' Error_Sev: ' + 
      CAST(ERROR_SEVERITY() AS varchar) +  
      ' Error_Msg: ' + ERROR_MESSAGE()
  END CATCH
END
Écrire des fonctions et des procédures stockées dans SQL Server

Affichez l'ERREUR…

DECLARE @ErrorMsgOut as nvarchar(max)

EXECUTE dbo.cusp_TripSummaryCreate 
        @TripDate = '1/32/2018',
        @RideHrs = 100,
        @ErrorMsg = @ErrorMsgOUT OUTPUT

SELECT @ErrorMsgOut as ErrorMessag
ErrorMessage
-------------------------------------------------
Error_Num: 241 Error_Sev: 16 
Error_Msg: Conversion failed when converting date and/or time from 
           character string
Écrire des fonctions et des procédures stockées dans SQL Server

THROW vs RAISERROR

THROW

  • Introduit dans SQL Server 2012
  • Simple et facile à utiliser
  • Les instructions suivantes ne seront PAS exécutées

RAISERROR

  • Introduit dans SQL Server 7.0
  • Génère une nouvelle erreur et ne peut pas accéder aux détails de l'erreur initiale (p. ex. le numéro de ligne d'origine)
  • Les instructions suivantes peuvent s'exécuter
Écrire des fonctions et des procédures stockées dans SQL Server

À vous d'INTERCEPTER !

Écrire des fonctions et des procédures stockées dans SQL Server

Preparing Video For Download...