ORA-01438: value larger than specified precision allowed for this column
OracleNe demek?
Bir NUMBER sütununa, tanımlanan hassasiyet (precision) ve ölçek (scale) sınırlarını aşan bir sayı yazılmaya çalışıldı. Örneğin NUMBER(4,2) sütununa tam kısmı 3 basamaklı bir değer sığmaz.
Neden olur?
Sütunun NUMBER(p,s) tanımının veriye göre çok dar olması; hesaplama sonucu beklenenden büyük çıkması; ondalık ölçek nedeniyle tam kısım için kalan basamak sayısının azalması (NUMBER(5,3) yalnızca 2 tam basamağa izin verir).
Nasıl çözülür?
Sütunun kapasitesini gerçek veri aralığına göre genişletin: ALTER TABLE tablo MODIFY (sutun NUMBER(12,2)); Uygulama tarafında değeri yuvarlayın ya da ROUND/TRUNC ile ölçeğe uydurun. Hangi satırın taştığını bulmak için sorgunuzu daraltarak test edin ve giriş doğrulaması ekleyin.
Aynı motorda diğer kayıtlar
- gc buffer busyWait (RAC): instance'lar arasında taşınan cache fusion block'u üzerinde contention
- library cache lockWait: library cache nesne handle'ı üzerinde contention (parse/DDL sıralaması)
- ORA-00604error occurred at recursive SQL level
- ORA-01400cannot insert NULL into (column)
- ORA-02291integrity constraint violated - parent key not found
- ORA-02292integrity constraint violated - child record found
- ORA-00979not a GROUP BY expression