Essayez de prendre des blocs dans SQL Server

Essayez de prendre des blocs dans SQL Server
Peu importe à quel point votre code est parfait, il y a toujours un risque d'erreurs. Il est donc préférable de mettre en œuvre des mesures de gestion des erreurs pour attraper et gérer les erreurs avant de briser la fonctionnalité de vos applications.

Dans ce guide, vous apprendrez à implémenter la gestion des erreurs dans SQL Server en utilisant les blocs d'essai et de capture.

Si vous cherchez à apprendre à générer des messages d'erreur définis par l'utilisateur, consultez notre tutoriel sur le tutoriel SQL Server Raiserror.

Introduction

Les blocs d'essai et de capture dans le serveur SQL vous permettent de prédire et de gérer gracieusement les erreurs qui peuvent se produire dans les requêtes SQL.

Tout d'abord, joignez les requêtes SQL qui peuvent provoquer des erreurs dans un bloc d'essai. Vous pouvez ensuite ajouter un bloc de capture une fois qu'une exception est élevée.

La syntaxe pour un bloc d'essai est comme indiqué:

commencer à essayer
-- Essayez d'exécuter ces déclarations
fin essayez;

Après le bloc d'essai, vous pouvez définir un bloc de capture qui suit une syntaxe similaire comme indiqué:

commencer à attraper
-- Cattre les déclarations
capture

Tout d'abord, le serveur SQL essaiera d'exécuter le code à l'intérieur du bloc d'essai. Si aucune erreur / exception ne se produit, elle saute le bloc de capture et continue avec l'exécution.

Cependant, si une erreur se produit à l'intérieur du bloc d'essai, l'exécution saute à l'intérieur de la capture et exécute le code à l'intérieur de ce bloc.

La syntaxe pour un bloc d'essai / capture complet est comme indiqué:

commencer à essayer
-- Essayez de me courir
endurcir
commencer à attraper
-- courir meiferrorintry
Fincatch;

Vous pouvez implémenter des mesures pour gérer l'erreur augmentée à l'intérieur du bloc de capture, telles que l'affichage des messages en utilisant Raiserror et des déclarations d'impression. N'oubliez pas que le message d'erreur à l'intérieur du bloc de capture n'est pas renvoyé à l'application à moins d'utiliser des mécanismes, comme une instruction SELECT.

Vous pouvez utiliser des fonctions spéciales pour obtenir des informations détaillées sur l'erreur:

  1. Error_number () - renvoie un message interne pour l'erreur.
  2. Error_severity () - montre le niveau de gravité de l'erreur. Une valeur comprise entre 0 et 25 avec une gravité plus élevée indique un niveau élevé de gravité. Remarque Une valeur de gravité de 20 à 25 est mortelle.
  3. Error_state - état du message d'erreur. Une valeur comprise entre 0 et 255.
  4. Error_message - un message descriptif de l'erreur qui s'est produite.
  5. Error_procedure () - montre le nom de la fonction, du déclencheur ou de la procédure stockée où l'erreur a été soulevée.

Assurez-vous d'utiliser les fonctions précédentes dans un bloc de capture; Sinon, ils retourneront une valeur nulle.

Exemples d'essai / capture SQL Server

Laissez-nous utiliser un fossé par zéro erreur pour illustrer comment utiliser le bloc Try / Catch. Commencez par créer une procédure comme indiqué dans les requêtes suivantes:

-- obtenir des informations d'erreur
createProcedUreget_errorinfo
comme
selecterror_number () Aserrornumber,
Error_severity () asseverity,
Error_state () aserrorState,
Error_procedure () aserrorprocedure,
Error_message () AserrrorMessage,
Error_line () aserrorline
commencer
-- DivideByzeroError
sélectionnez 1/0;
endurcir
commencer à attraper
-- Exécutez ProcedureRetoGeterrorinfo
exectet_errorinfo;
Catch de fin;

Dans l'exemple ci-dessus, nous créons une procédure stockée pour récupérer des informations sur une erreur. Ensuite, nous soulevons une erreur en plongeant par zéro.

Si nous exécutons la requête ci-dessus, nous devrions obtenir une sortie comme:

Que se passe-t-il s'il n'y a pas d'erreur dans le bloc de capture comme indiqué:

commencer
-- pas d'erreur
select100 / 5AsResult;
endurcir
commencer à attraper
-- Exécutez ProcedureRetoGeterrorinfo
exectet_errorinfo;
Fincatch;

Puisqu'il n'y a pas d'erreur dans le bloc d'essai, le serveur SQL saute les blocs de capture et renvoie le résultat. Un exemple de résultat est comme indiqué:

Conclusion

Ce guide a couvert l'implémentation et l'utilisation de la gestion des erreurs dans le serveur SQL à l'aide des blocs Try / Catch. De plus, des fonctions spéciales ont été expliquées et fournies pour récupérer des informations détaillées sur l'erreur. Nous espérons que vous avez trouvé cet article utile. Découvrez plus d'articles sur les conseils pour les conseils et les informations sur les serveurs SQL.