2015-01-16 20 views
9

Ben yürütmeye çalıştı bir SQLINSERTToad for oracle ile: GRAT_ACTIVITY tablo yapısı aşağıdaki gibidirORA-00911: geçersiz karakter hatasını nasıl çözebilirim?

INSERT INTO GRAT_ACTIVITY 
    (UUID, IP_ADRESS, SEND_MAIL, DATE_CREA, DATE_UPD, CREATOR, CENTER, ETAT, REQUEST) 
VALUES('555-vgd9-pllkd-5513', '172.12.23.130', 'N', SYSDATE, SYSDATE, '1554', 'M18', 'I', 8842); 
--COMMIT; 

:

CREATE TABLE CASH.GRAT_ACTIVITY 
(
    UUID  VARCHAR2(64 BYTE) NOT NULL, 
    IP_ADRESS VARCHAR2(15 BYTE), 
    SEND_MAIL VARCHAR2(1 BYTE), 
    DATE_CREA DATE, 
    DATE_UPD DATE, 
    CREATOR VARCHAR2(4 BYTE), 
    CENTER  VARCHAR2(4 BYTE), 
    ETAT  VARCHAR2(1 BYTE), 
    REQUEST NUMBER 
) 

hata iletisi:

ORA-00911: geçersiz karakter

Neden: tanımlayıcılar, harfler ve sayılar dışındaki herhangi bir ASCII karakteriyle başlamayabilir. İlk karakterinden sonra $ # _'a da izin verilir. Çift tırnaklarla çevrelenen tanımlayıcılar, bir çift tırnaktan başka herhangi bir karakter içerebilir. Alternatif tırnak işaretleri (q '# ... #') , boşluk, sekme veya satırbaşı değerlerini sınırlayıcı olarak kullanamaz. Tüm diğer bağlamlar için, SQL Dil Referans El Kitabına bakın.

Eylem: Yok

Bunu nasıl

çözebilir

? $, _ ve # Bir sütun veya tablonun adına kullanılan başka bir özel karakter, adı çift tırnak içine alınmaması gerekir

+2

Açıklama düzgün. Bazı Toad versiyonlarının yorumlarla karıştırıldığını hatırlıyorum; Yorumlanan işlemi tamamen kaldırırsanız işe yarar mı? Ve bir deyim ya da bir senaryo olarak mı koşuyorsunuz? –

+0

DDL'nizi ve DML'nizi SQL Plus (Toad değil) kullanarak çalıştırırken sorun yaşamadım. –

+0

[Bu, ilgili olabilir] (https://support.software.dell.com/toad-for-oracle/kb/47096), ancak aynı satırdaki yorumu vardır. –

cevap

25

Yürütme ifadeniz geçerlidir. Hata Toad bir ifadenin parçası olarak yer alması, bir ORA-00911 sebep yok komuta parçası olarak sondaki noktalı virgül dahil olduğu anlamına görünüyor - bu istemci açıklamada ayırıcı, deyimi kendisi parçası değil çünkü.

Bu olabilir Toad kafa aşağıdaki yorumlar Çıkış hattı olabilir (as described here); ya da her şeyi tek bir deyim olarak çalıştırmaya çalıştığınız olabilir; bu durumda, çalıştırma deyimi (F5) yerine çalışma komut dosyası komutunu (F9) kullanmayı deneyebilirsiniz.

Sadece yorumladı aşımı hat problemi ortadan yapar çıkarmadan, ama aynı zamanda gerçek bir ile bunu görürse size ifadeleri çalıştırmak için yanlış bir yöntem kullanmakta olduğunuzu olma olasılığı daha sonra işlemek.

Toad'in bir açıklamadaki noktalı virgülleri nasıl ayrıştırdığı hakkında biraz daha fazla bilgi var on this related question, ancak Toad'la daha fazla ayrıntıya girmeye yeterince aşina değilim.

+0

@MichaelS. - Cevabınız Toad'ın koşma komutu hakkında yapabileceğimden daha fazla ayrıntı veriyor, bu yüzden yararlı olabilir ve bunu silme işlemini geri almayı düşünebilirsiniz - sanırım avlamıyor * 8-) –

+0

teşekkürler. bu cevap benim günümü – hackmith

0

. Link

+0

Soruda DDL ve DML'den, durum bu değil. –

+0

@erakm Cevabımda yazdığım aynı bağlantıda yer alan herhangi bir özel caracter –

+0

seçeneğini düşünmüyorum. Seçenek-2: Bu hata, SQL'inizi düzenleyicinize başka bir programdan yapıştırdıysanız oluşabilir. Bazen mevcut olabilecek yazdırılamayan karakterler vardır. Bu durumda, SQL ifadenizi yeniden yazmayı ve sonra yeniden çalıştırmayı denemelisiniz. – erakm

0

Son zamanlarda aynı şeyle karşılaştım. Bir belgeden bir komut dosyasını sql geliştiricisine kopyalarken boşluklardan kaynaklanıyordu. Boşlukları kaldırmak zorunda kaldım ve senaryo çalıştı.

İlgili konular