DBAtlas · Veritabanı operasyon atlası

ORA-01438: value larger than specified precision allowed for this column

Oracle

Ne 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.

DBAtlas'ta aç →

Aynı motorda diğer kayıtlar