FirebirdSQL logo

SQLCODE

Disponible en

PSQL

Syntaxe
SQLCODE
type de résultat de retour

INTEGER

Dans les blocs de gestion d’erreur WHEN …​ DO la variable contextuelle SQLCODE contient le code d’erreur SQL actuel.Avant Firebird 2.0, la valeur de SQLCODE ne pouvait être récupérée que dans les blocs d’erreur WHEN SQLCODE et WHEN ANY.Il peut maintenant être non nul dans les blocs WHEN GDSCODE et WHEN EXCEPTION à condition que l’erreur qui a déclenché le bloc corresponde au code d’erreur SQL.En dehors des gestionnaires d’erreurs, SQLCODE est toujours 0 et en dehors de PSQL, il n’existe pas du tout.

Example 1. Utilisation d’une variable SQLCODE
...
WHEN ANY DO
BEGIN
  IF (SQLCODE <> 0) THEN
    MSG = 'Erreur SQL détectée !';
  ELSE
    MSG = 'Il n''y a pas d''erreur !';
  EXCEPTION EX_CUSTOM MSG;
END
...

SQLSTATE

Disponible en

PSQL

Syntaxe
SQLSTATE
type de résultat de retour

CHAR(5)

Dans les blocs de gestion d’erreur WHEN …​ DO variable de contexte SQLSTATE variable contient 5 caractères du code d’état compatible SQL-2003 — passé par la déclaration causant l’erreur.En dehors des gestionnaires d’erreurs, SQLSTATE est toujours '00000' et en dehors de PSQL, il n’existe pas du tout.

Note
  • SQLSTATE est destiné à remplacer SQLCODE. Ce dernier est maintenant obsolète et sera supprimé dans les futures versions de Firebird ;

  • Tout code SQLSTATE se compose de deux caractères de classe et de trois caractères de sous-classe. Les classes 00 (exécution réussie), 01 (avertissement) et 02 (pas de données) représentent les conditions d’achèvement. Chaque code d’état en dehors de ces classes est une exception. Comme les classes 00, 01 et 02 ne provoquent pas d’erreur, elles ne seront jamais détectées dans la variable SQLSTATE.

Example 1. Utilisation d’une variable SQLSTATE
WHEN ANY DO
BEGIN
  MSG = CASE SQLSTATE
          WHEN '22003' THEN
            'Le nombre est hors de portée !'
          WHEN '22012' THEN
            'Division par zéro !'
          WHEN '23000' THEN
            'Violation du control d''intégrité !'
          ELSE 'Il n''y a pas d''erreurs ! SQLSTATE = ' || SQLSTATE;
        END;
  EXCEPTION EX_CUSTOM MSG;
END