Comment gérer les erreurs SQL avec sqlstate

SQLSTATE spécifie un grand nombre de conditions anormales dans SQL. SQLSTATE est une chaîne de cinq caractères dans lequel seules les lettres majuscules UN par Z et les chiffres de 0 à 9 sont des caractères valides. La chaîne de cinq caractères est divisé en deux groupes: un code de classe de deux caractères et un code de la sous-classe de trois caractères.

Le code de la classe a un statut à l'issue d'une instruction SQL. Ce statut pourrait indiquer la réussite de la déclaration, ou l'un d'un certain nombre de grands types de conditions d'erreur. Le code de la sous-classe fournit des détails supplémentaires sur ce exécution particulière de la déclaration.

Le standard SQL définit un code de classe qui commence par les lettres UN par H ou les chiffres de 0 à 4 conséquent, ces codes de classe signifient la même chose dans toute mise en œuvre. Codes de classe qui commencent par les lettres je par Z ou les chiffres 5 à 9 sont laissées ouvertes pour les développeurs à définir, car la spécification SQL ne peut pas anticiper toutes les conditions qui peuvent venir dans chaque application.

Cependant, les développeurs devraient utiliser ces codes de classe non standard aussi peu que possible pour éviter les problèmes de migration d'un SGBD à l'autre. Idéalement, les développeurs doivent utiliser les codes standard la plupart du temps et les codes non standard que dans des circonstances les plus insolites.

image0.jpg


Un code de classe 00 indique la réussite. Code de classe 01 signifie que la déclaration exécutée avec succès, mais produit un avertissement. Code de classe 02 indique une condition pas de données. Quelconque SQLSTATE code de classe autre que 00, 01, ou 02 indique que l'instruction n'a pas été exécuté avec succès.

Car SQLSTATE mises à jour après chaque opération de SQL, vous pouvez le vérifier après chaque exécution d'une instruction. Si SQLSTATE contient 00000 (réussite), vous pouvez procéder à l'opération suivante. Si elle contient rien d'autre, vous voudrez peut-être à se ramifier de la ligne principale de votre code pour gérer la situation. Le code de code et sous-classe classe spécifique qu'une SQLSTATE contient des déterminer lequel de plusieurs actions possibles que vous devez prendre.

Utiliser SQLSTATE dans un programme de langue du module, inclure une référence au sein de vos définitions de procédure, comme dans l'exemple suivant:

PROCÉDURE éléments nutritifs (SQLSTATE,: foodname CHAR (20),: calories SMALLINT,: protéines DECIMAL (5,1),: DECIMAL graisses (5,1) ,: carbo DECIMAL (5,1)) INSERT INTO ALIMENTS (FoodName, Calories , protéines, lipides, glucides) VALUES (: foodname,: calories, protéines:,: graisse,: carbo) -

A l'endroit approprié dans votre programme de langage procédural, vous pouvez faire des valeurs disponibles pour les paramètres (peut-être en les sollicitant de l'utilisateur) et ensuite appeler la procédure. La syntaxe de cette opération varie d'une langue à l'autre, mais il ressemble à ceci:

foodname = "gombo, bouilli" -calories = 29 = 2,0 -Fat -Concentrats = 0,3 = 6,0 nutritifs dans -carbo (Etat, foodname, calories, protéines, lipides, carbo) -

L'Etat de SQLSTATE est renvoyé dans la variable état. Votre programme peut examiner cette variable, puis prendre les mesures appropriées sur la base du contenu de la variable.


» » » » Comment gérer les erreurs SQL avec sqlstate