ORA-01722: Invalid number (nombre invalide)
OracleQue signifie cette erreur ?
Une chaîne de caractères non convertible en nombre a été utilisée là où un contexte numérique est requis. Une conversion implicite ou explicite a échoué.
Cause
Comparaison d'une colonne numérique avec du texte (par ex. WHERE num_col = 'ABC'), insertion d'une valeur contenant des lettres dans un champ numérique, format inadapté pour TO_NUMBER, ou incohérence des séparateurs décimal/de milliers (virgule ou point).
Comment la corriger
Trouvez l'expression dont la conversion échoue ; généralement une condition WHERE ou une valeur d'INSERT. Assurez la compatibilité des types dans les comparaisons texte/nombre et utilisez une conversion explicite si nécessaire : TO_NUMBER(my_column) ou TO_CHAR côté texte. Empêchez les saisies non numériques dans les colonnes numériques au niveau de la couche applicative. Faites attention au paramètre NLS_NUMERIC_CHARACTERS.
Autres entrées pour ce moteur
- ORA-00018Maximum number of sessions exceeded (nombre maximal de sessions dépassé)
- ORA-28000The account is locked (le compte est verrouillé)
- ORA-01578Oracle data block corrupted (file #, block #) (bloc de données Oracle corrompu)
- ORA-02049Timeout: distributed transaction waiting for lock (délai expiré : transaction distribuée en attente de verrou)
- enq: TX - row lock contentionAttente : session bloquée sur un verrou de ligne détenu par une autre transaction
- log file syncAttente : session attendant que LGWR écrive le redo sur disque au commit
- db file sequential readAttente : lecture physique d'un seul bloc, généralement un accès par index ou à une table