Oracle hataları

ORA-00933: SQL command not properly ended

SQL komutu düzgün bitmedi

ORA-00933: SQL command not properly ended

Oracle, ifadenin bittiğini düşündüğü yerden sonra metin buldu. Yaygın nedenler: dinamik SQL’de sondaki noktalı virgül, tablo takma adından önce AS anahtar sözcüğü ya da yanlış yere konmuş bir cümlecik.

Ne anlama gelir?

Ayrıştırıcı ifadenin tamamlandığına karar verdi ama arkasından başka metin geldi. Oracle, tanıdığı ifadeye sığdıramadığı hiçbir şeyi kabul etmez; ilk beklenmeyen sözcükte ORA-00933 ile durur.

Yaygın nedenler

Nasıl çözülür?

  1. Sürücülere ya da EXECUTE IMMEDIATE’e verilen SQL’in sonundaki noktalı virgülü kaldırın (PL/SQL blokları END;’ini korur).
  2. Tablo takma adlarından önceki AS’i silin.
  3. Oracle dışı sözdizimini değiştirin: LIMIT yerine FETCH FIRST n ROWS ONLY (12c ve sonrası), UPDATE … FROM yerine MERGE ya da ilişkili alt sorgu.
  4. İfadenin bitmesi gereken yerden hemen sonraki sözcüğe bakın.

Örnek

Oracle’da tablo takma adı AS almaz:

-- ORA-00933
SELECT e.name FROM employees AS e;

-- Çalışır
SELECT e.name FROM employees e;

Dinamik SQL’in içinde noktalı virgül olmaz:

EXECUTE IMMEDIATE 'DELETE FROM tmp_orders';   -- 'DELETE FROM tmp_orders;' değil

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-00907ORA-00904 Tüm Oracle hataları →

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