ORA-01722: Invalid number
OracleNe demek?
Sayısal bir bağlama gereken yerde, sayıya dönüştürülemeyen bir karakter dizisi kullanıldı. Örtük veya açık dönüşüm başarısız oldu.
Neden olur?
Sayısal sütunla metin karşılaştırması (örn. WHERE num_col = 'ABC'), sayısal alana harf içeren değer eklenmesi, TO_NUMBER için uygun olmayan biçim, ya da ondalık ayıracı/binlik ayıracı uyuşmazlığı (virgül-nokta).
Nasıl çözülür?
Hatalı dönüşümün olduğu ifadeyi bulun; genellikle bir WHERE koşulu veya INSERT değeridir. Metin ve sayı karşılaştırmalarında tür uyumunu sağlayın, gerekirse açık dönüşüm kullanın: TO_NUMBER(sutun) ya da metin tarafı için TO_CHAR. Sayısal sütuna sayı olmayan veri girişini uygulama katmanında engelleyin. NLS_NUMERIC_CHARACTERS ayarına dikkat edin.
Aynı motorda diğer kayıtlar
- ORA-00018Maximum number of sessions exceeded
- ORA-28000The account is locked
- ORA-01578Oracle data block corrupted (file #, block #)
- ORA-02049Timeout: distributed transaction waiting for lock
- enq: TX - row lock contentionWait: oturum, başka bir transaction'ın tuttuğu row-level lock'ı bekliyor
- log file syncWait: oturum, commit'te LGWR'ın redo'yu diske yazmasını bekliyor
- db file sequential readWait: tek bloklu fiziksel okuma; genellikle index ya da tablo erişimi