codes SQL

Lorsque Db2 exécute une instruction SQL, il renvoie des informations sur l'exécution de l'instruction. Ces informations comprennent le code de retour SQL (SQLCODE) et le SQLSTATE, qui indiquent si l'exécution de l'instruction a réussi.

SQLCODE

La valeur SQLCODE est définie par l' Db2 , après l'exécution de chaque instruction, comme indiqué dans le tableau suivant.

Valeur SQLCODE Signification Descriptions SQLCODE
SQLCODE = 0 Exécution réussie, si l' SQLWARN0 e est vide.

Si SQLWARN0 = 'W', exécution réussie avec avertissement.

000
SQLCODE = 100 Aucune donnée n'a été trouvée. Par exemple, une instruction FETCH ne renvoyait aucune donnée car le curseur était positionné après la dernière ligne de la table de résultats. +100
SQLCODE > 0 et non = 100 Exécution réussie avec un avertissement. +sqlcode-num
SQLCODE < 0 L'exécution n'a pas été un succès. - sqlcode-num

Pour obtenir les descriptions au format PDF des codes SQL que Db2 12 pourrait émettre, consultez Icône du fichier PDF Codes.

Comment les applications reçoivent-elles les codes SQL?

Un programme d'application qui contient des instructions SQL exécutables doit effectuer l'une des opérations suivantes :

  • Déclarer SQLCODE et SQLSTATE (SQLCOD et SQLSTA dans Fortran ) comme variables hôte autonomes. Si vous spécifiez l'option de précompilateur STDSQL(YES) ou de coprocesseur d'instruction SQL, ces variables hôte reçoivent les codes de retour et vous ne devez pas inclure d'instruction SQLCA dans votre programme.
  • Fournir une structure nommée SQLCA. La variable SQLCA contient les variables SQLCODE et SQLSTATE, ainsi que d'autres informations sur l'état. Vous pouvez fournir une SQLCA en utilisant l'instruction INCLUDE SQLCA. Vous pouvez appeler le sous-programme d'échantillonnage DSNTIAR à partir de votre programme d'application pour formater le contenu de la SQLCA, ou vous pouvez récupérer vous-même les champs de la SQLCA.

Que le programme d'application fournisse une variable SQLCA ou une variable autonome, SQLCODE est défini par Db2 après l'exécution de chaque instruction SQL.

Tokens dans le texte du message du code SQL

Dans cette section, les phrases en italique dans le texte du message du code de retour SQL correspondent aux jetons renvoyés dans le champ SQLERRMC de SQLCA. Si Db2 renvoie plusieurs jetons, ils apparaissent séquentiellement dans SQLERRMC dans l'ordre où ils apparaissent dans le texte du message. Début du changementAu maximum, 70 octets sont renvoyés pour un jeton de message car le champ SQLERRMC de la SQLCA est limité à 70 octets. Utilisez l'instruction GET DIAGNOSTICS avec un DB2 mot-clé _ORDINAL_TOKEN_n pour obtenir la valeur complète d'un jeton de message.Fin de la modification

Dans certains cas, un jeton n'est pas applicable ou disponible pour un cas spécifique d'erreur, et*Nest renvoyé à la place.

Les jetons peuvent parfois faire référence aux noms d'objets sur les accélérateurs au lieu des noms d'objets associés sur Db2.

SQLSTATE

SQLSTATE est également défini par Db2 après l'exécution de chaque instruction SQL. Ainsi, les programmes d'application peuvent vérifier l'exécution des instructions SQL en testant SQLSTATE au lieu de SQLCODE. SQLSTATE (SQLSTT en FORTRAN) est une variable de type chaîne de caractères de 5 octets dans le SQLCA.

SQLSTATE fournit aux programmes d'application des codes communs pour les conditions d'erreur communes (les valeurs de SQLSTATE sont spécifiques au produit uniquement si l'erreur ou l'avertissement est spécifique au produit). De plus, SQLSTATE est conçu de manière à ce que les programmes d'application puissent tester des erreurs spécifiques ou des classes d'erreurs. Le schéma de codage est le même pour tous les produits de base de données relationnelle d' IBM®.