ORA-01438: value larger than specified precision allowed for this column (Wert größer als die für die Spalte erlaubte Precision)
OracleWas bedeutet das?
In eine NUMBER-Spalte wurde eine Zahl geschrieben, die die definierten Grenzen für Precision und Scale überschreitet. Zum Beispiel passt ein Wert mit dreistelligem ganzzahligem Anteil nicht in eine NUMBER(4,2)-Spalte.
Ursache
Die Definition NUMBER(p,s) der Spalte ist für die Daten zu knapp; ein Rechenergebnis ist größer als erwartet; die Nachkommastellen verringern die für den ganzzahligen Anteil verbleibenden Stellen (NUMBER(5,3) erlaubt nur 2 Vorkommastellen).
Lösung
Erweitere die Spaltenkapazität passend zum tatsächlichen Datenbereich: ALTER TABLE my_table MODIFY (my_column NUMBER(12,2)); Runde den Wert in der Anwendung oder passe ihn mit ROUND/TRUNC an die Scale an. Um die überlaufende Zeile zu finden, grenze deine Abfrage beim Testen ein, und ergänze eine Eingabevalidierung.
Weitere Einträge zu dieser Datenbank
- gc buffer busyWait (RAC): Konkurrenz um einen Cache-Fusion-Block, der zwischen Instanzen übertragen wird
- library cache lockWait: Konkurrenz um ein Library-Cache-Objekthandle (Parse-/DDL-Serialisierung)
- ORA-00604error occurred at recursive SQL level (Fehler auf rekursiver SQL-Ebene)
- ORA-01400cannot insert NULL into (column) (NULL kann nicht in die Spalte eingefügt werden)
- ORA-02291integrity constraint violated - parent key not found (Integritäts-Constraint verletzt: Elternschlüssel nicht gefunden)
- ORA-02292integrity constraint violated - child record found (Integritäts-Constraint verletzt: Kinddatensatz gefunden)
- ORA-00979not a GROUP BY expression (kein GROUP-BY-Ausdruck)