Oracle hataları

ORA-00907: missing right parenthesis

Kapanış parantezi eksik

ORA-00907: missing right parenthesis

Ayrıştırıcı, kapanış parantezi beklediği bir noktaya geldi. Bazen gerçekten bir parantez eksiktir; ama çoğu zaman parantez içindeki bir şey orada kullanılamaz — IN alt sorgusu içinde ORDER BY ya da CREATE TABLE’da hatalı bir kolon tanımı gibi.

Ne anlama gelir?

Oracle ifadeyi soldan sağa okur. Açılan bir parantezin içindeki metin ayrıştırıcı için anlamsızlaştığında, o noktada kapanış parantezi beklediğini bildirir. Bu yüzden ORA-00907 çoğu zaman doğru görünen bir SQL’i gösterir: asıl sorun parantez içindeki ilk geçersiz öğedir.

Yaygın nedenler

Nasıl çözülür?

  1. Parantezleri sayın; parantez eşleştirmesi yapan bir editörle bu hızlıca biter.
  2. IN içindeki alt sorgulardan ORDER BY’ı kaldırın; sıralamayı dış sorguda yapın.
  3. CREATE TABLE’daki kolon tanımlarını kontrol edin: her VARCHAR2 uzunluk ister, kısıtların sözdizimi doğru olmalıdır.
  4. Hata kaybolana kadar ifadeyi adım adım kısaltın — en son çıkardığınız parça sorunu içerir.

Örnek

IN içinde ORDER BY kullanılamaz:

-- ORA-00907
SELECT * FROM orders
 WHERE customer_id IN (SELECT id FROM customers ORDER BY name);

-- Çalışır
SELECT * FROM orders
 WHERE customer_id IN (SELECT id 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-00936ORA-00933ORA-00904 Tüm Oracle hataları →

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