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 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.
Au 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.
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®.