EXCEPTION ERROR type-exception HAS OCCURRED DURING type-opération OPERATION ON type-donnée DATA, POSITION numéro-position
Explication:
Le traitement d’une fonction ou d’une expression arithmétique figurant dans la liste d’un ordre SELECT, ou dans une condition de recherche d’un ordre SELECT. UPDATE ou DELETE. ou pendant l’évaluation d’une fonction de colonne, ou dans la clause SET d’un ordre UPDATE, a détecté une erreur d’exception, éventuellement indiquée par ‘type- exception’. Les ‘type-exception’ possibles sont : FIXED POINT OVERFLOW, DECIMAL OVERFLOW, DIVIDE EXCEPTION, et EXPONENT OVERFLOW. ‘type- donnée’ peut indiquer les types de donnée des éléments en cours de manipulation et ‘type-opération’ peut préciser l’opération en cours de traitement au moment de l’erreur. Si l’erreur se produit sur un SELECT externe, ‘numéro-position’ indique la position de l’expression incriminée dans la liste du SELECT.
Les ‘type-donnée’ possibles sont : INTEGER, SMALLINT. DECIMAL ou FLOAT. Le type de donnée peut être différent de celui de la colonne ou du littéral incriminé dans le cas de conversions par DB2. Les ‘type-opération’ possibles sont : ADDITION, SUBTRACTION, MULTIPLICATION. DIVISION et NEGATION.
Un FIXED POINT OVERFLOW peut apparaître dans une opération sur des champs INTEGER ou SMALLINT.
Un DECIMAL OVERFLOW peut apparaître lors de la perte de chiffres significatifs, due à une longueur trop courte du champ destiné à accueillir le résultat.
Un DIVIDE EXCEPTION peut apparaître lors d’une division par zéro d’un champ numérique, ou lorsque le quotient de la division dépasse la taille du champ spécifié.
Un EXPONENT OVERFLOW peut apparaître dans une opération en virgule flottante lorsque la mantisse dépasse 127 alors que l’exposant n’est pas zéro.
Note :
Les informations ‘type-exception’, ‘type-donnée’, ‘type-opération’, ‘numéro-position’ peuvent ne pas être retournées en SQLCA, en fonction du moment de détection de l’erreur.
Action système :
L’ordre ne peut être exécuté. Dans le cas d’un ordre UPDATE ou DELETE, aucune donnée n’est mise à jour ou détruite. Si l’ordre est un FETCH, le curseur reste ouvert. Si l’ordre est un OPEN, le curseur reste fermé.
Réponse programmeur :
Examiner l’ordre SQL pour déterminer la cause du problème. Le problème peut être dépendant des données. Analyser les données incriminées lors de la détection de l’erreur.
Si l’expression arithmétique en erreur figure sur la liste d’un SELECT externe, il est recommandé de coder une variable indicateur pour chaque expression de la liste. Cette méthode permet de poursuivre le traitement et de fournir une valeur pour toutes les colonnes et expressions non erronées.
Voir l’explication du code -405 pour les plages de valeurs des différents types de donnée.