Oracle hataları

ORA-00904: invalid identifier

Geçersiz tanımlayıcı — kolon ya da ad bulunamadı

ORA-00904: "COLUMN_NAME": invalid identifier

Oracle, ifadede kullanılan bir kolonu ya da adı bulamıyor. Çoğunlukla kolon adı yanlış yazılmıştır, başka bir tabloya aittir, tırnak içinde farklı büyük/küçük harfle oluşturulmuştur ya da WHERE içinde SELECT listesindeki bir takma ad kullanılmıştır.

Ne anlama gelir?

SQL ifadesindeki her tanımlayıcı Oracle’ın görebildiği bir kolona, takma ada ya da fonksiyona karşılık gelmelidir. Gelmediğinde Oracle onu tırnak içinde bildirir — örneğin "EMP_NAME": invalid identifier. Yani hangi adı kontrol etmeniz gerektiğini mesajın kendisi söyler.

Yaygın nedenler

Nasıl çözülür?

  1. Kolon adlarını tam olarak kontrol edin: DESC tablo_adi ya da USER_TAB_COLUMNS.
  2. Kolon tırnakla oluşturulduysa aynı harf yapısıyla tırnak içinde sorgulayın — ya da adını büyük harfe çevirin.
  3. WHERE içinde takma ad yerine ifadenin kendisini yazın ya da sorguyu alt sorguya alıp dışarıda filtreleyin.
  4. Join’lerde kolonları tablo takma adıyla niteleyin ki her ad doğru tabloya bağlansın.

Örnek

Takma ad WHERE içinde görünmez:

-- ORA-00904: "ANNUAL": invalid identifier
SELECT salary * 12 AS annual FROM employees WHERE annual > 100000;

-- Çalışır
SELECT * FROM (SELECT salary * 12 AS annual FROM employees)
 WHERE annual > 100000;

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-00942ORA-00936ORA-00933 Tüm Oracle hataları →

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