ORA-00932: inconsistent datatypes: expected X got Y
Aynı tipte olması gereken iki değer farklı tipte. Mesaj, Oracle’ın ne beklediğini ve ne bulduğunu söyler. Bir tarafı TO_DATE, TO_CHAR ya da TO_NUMBER ile açıkça dönüştürün veya ifadeyi düzeltin.
ORA-00932 ne demek?
Oracle bazı tipleri kendiliğinden dönüştürür ama her çifti değil: DATE bir NUMBER ile karşılaştırılamaz, CASE dallarının tipleri de uyumlu olmalıdır. Mesaj iki tarafı da söyler; örneğin expected DATE got NUMBER. CLOB kolonlar, DISTINCT ya da GROUP BY gibi LOB kabul etmeyen yerlerde de bu hatayı verir.
ORA-00932 neden olur?
- Bir tarihi bir sayıyla karşılaştırmak.
- Farklı tipler döndüren
CASEya daDECODEdalları. - CLOB’u
DISTINCT,GROUP BY,ORDER BYiçinde ya da=ile kullanmak. - Kolon tipleri farklı
UNIONdalları.
ORA-00932 nasıl çözülür?
- Mesajdaki beklenen ve bulunan tipleri okuyun.
- Açıkça dönüştürün:
TO_DATE,TO_CHARya daTO_NUMBER. - Her
CASEdalının aynı tipi döndürmesini sağlayın. - CLOB’ları
DBMS_LOB.COMPAREile karşılaştırın; kısa bir değer yetiyorsaDBMS_LOB.SUBSTRkullanın.
ORA-00932 örneği
CASE dalları uyuşmalı:
-- ORA-00932: inconsistent datatypes: expected CHAR got NUMBER
SELECT CASE WHEN status = 'A' THEN 'aktif' ELSE 0 END FROM customers;
-- Çalışır
SELECT CASE WHEN status = 'A' THEN 'aktif' ELSE '0' END FROM customers;
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-01722ORA-01861ORA-06502 Tüm Oracle hataları →
Oracle dokümantasyonu: ORA-00932. Oracle, Oracle Corporation’ın tescilli ticari markasıdır. SQLlightspeed’in Oracle ile bir bağlantısı yoktur.