Sommaire

La gestion des erreurs en Transact SQL

La gestion des erreurs permet d’anticiper les problèmes qui peuvent se dérouler au cours de l’exécution d’un programme.

Le principe est de tester le code dans un premier bloc avec BEGIN TRY … END TRY puis d’intercepter l’exception avec BEGIN CATCH …. END CATCH.

Syntaxe

BEGIN  
  
... ...  
  
[BEGIN TRY  
... ...  
END TRY]  
[BEGIN CATCH  
... ...  
END CATCH]  
END;

Exemple

DECLARE @i int 
BEGIN 
BEGIN TRY 
SET @i = 2 
SET @i = @i / 0 
END TRY 
BEGIN CATCH 
SELECT ERROR_NUMBER() AS ErrorNumber 
    , ERROR_MESSAGE() AS ErrorMessage 
    , ERROR_LINE() AS ErrorLine;END CATCH 
END;

Résultat

ErrorNumber

ErrorMessage

ErrorLine

8134

Division par zéro.

5

Il est aussi possible de traiter l’exception.

DECLARE @i int 
BEGIN 
BEGIN TRY 
SET @i = 2 
SET @i = @i / 0 
END TRY 
BEGIN CATCH 
    IF @@ERROR = 8134 
        SET @i = @i / 1 
print @i 
END CATCH 
END;

Résultat

2

Il est possible de lever une erreur grâce à la fonction RAISERROR(). Cette fonction accepte trois arguments (constante ou message ou variable, numéro de la gravité d’erreur, état de l’erreur).

Exemple

DECLARE @i int 
DECLARE @f float 
BEGIN 
IF @i IS NULL OR @i = 0 
RAISERROR(’valeur ...