ORA-01438: value larger than specified precision allowed for this column (valeur supérieure à la précision autorisée pour la colonne)
OracleQue signifie cette erreur ?
Un nombre dépassant les limites de précision et d'échelle définies a été écrit dans une colonne NUMBER. Par exemple, une valeur dont la partie entière compte 3 chiffres ne tient pas dans une colonne NUMBER(4,2).
Cause
La définition NUMBER(p,s) de la colonne est trop étroite pour les données ; un résultat de calcul est plus grand que prévu ; l'échelle décimale réduit les chiffres restants pour la partie entière (NUMBER(5,3) n'autorise que 2 chiffres entiers).
Comment la corriger
Élargissez la capacité de la colonne pour correspondre à la plage réelle des données : ALTER TABLE my_table MODIFY (my_column NUMBER(12,2)); Arrondissez la valeur dans l'application, ou ajustez-la à l'échelle avec ROUND/TRUNC. Pour trouver la ligne en dépassement, affinez votre requête lors des tests, et ajoutez une validation des saisies.
Autres entrées pour ce moteur
- gc buffer busyAttente (RAC) : contention sur un bloc cache fusion en cours de transfert entre instances
- library cache lockAttente : contention sur un handle d'objet du library cache (sérialisation parse/DDL)
- ORA-00604error occurred at recursive SQL level (erreur au niveau du SQL récursif)
- ORA-01400cannot insert NULL into (column) (insertion de NULL impossible dans la colonne)
- ORA-02291integrity constraint violated - parent key not found (contrainte d'intégrité violée : clé parente introuvable)
- ORA-02292integrity constraint violated - child record found (contrainte d'intégrité violée : enregistrement enfant trouvé)
- ORA-00979not a GROUP BY expression (n'est pas une expression GROUP BY)