Oracle hataları

ORA-01438: value larger than specified precision

Değer, kolonun hassasiyetinden büyük

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

Bir sayı, NUMBER(p,s) kolonu için fazla basamaklı. Ondalık ayraçtan önceki basamakların p eksi s ile sınırlı olduğunu unutmayın. Değeri düzeltin ya da kolonu genişletin.

ORA-01438 ne demek?

NUMBER(p,s) en çok p anlamlı basamak tutar; bunların s tanesi ondalık ayraçtan sonradır. Yani NUMBER(5,2) 99999’a değil, 999,99’a kadar değer alır. Ayraçtan sonraki fazla basamaklar sessizce yuvarlanır, ama ayraçtan önceki fazla basamaklar ORA-01438 verir. Mesaj kolon adını söylemez.

ORA-01438 neden olur?

ORA-01438 nasıl çözülür?

  1. İfadedeki kolonların hassasiyetine ve ölçeğine bakarak kolonu bulun: USER_TAB_COLUMNS.
  2. Gelen değeri doğrulayın; şaşırtıcı bir sayı çoğu zaman asıl hatadır.
  3. Değer doğruysa kolonu genişletin: ALTER TABLE t MODIFY (tutar NUMBER(12,2)).

ORA-01438 örneği

NUMBER(3) en çok üç basamak tutar:

-- ORA-01438: value larger than specified precision allowed for this column
UPDATE products SET stock = 12345 WHERE id = 1;   -- stock NUMBER(3)

ALTER TABLE products MODIFY (stock NUMBER(7));

SQLlightspeed’de

Bir ifade hata verdiğinde SQLlightspeed’in hata paneli, hata kodunu sade bir Türkçe açıklama ve ne yapmanız gerektiğine dair bir öneriyle; Oracle’ın kendi mesajı ve Oracle dokümantasyonuna bağlantıyla birlikte gösterir — bu hata ve sık görülen onlarca başka hata için.

İlgili hatalar

ORA-12899ORA-01722ORA-06502 Tüm Oracle hataları →

Oracle dokümantasyonu: ORA-01438. Oracle, Oracle Corporation’ın tescilli ticari markasıdır. SQLlightspeed’in Oracle ile bir bağlantısı yoktur.