2015-01-16 21 views
9

Ho cercato di eseguire un SQLINSERT con Toad for oracle:Come posso risolvere ORA-00911: errore di carattere non valido?

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; 

la struttura GRAT_ACTIVITY tavolo è come qui sotto:

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 
) 

il messaggio di errore:

ORA-00911: carattere non valido

Causa: gli identificatori non possono iniziare con caratteri ASCII diversi da lettere e numeri. $ # _ sono ammessi anche dopo il primo carattere . Gli identificatori racchiusi tra le doppie quotazioni possono contenere qualsiasi carattere diverso da una doppia stringa. Preventivi alternativi (q '# ... #') non possono utilizzare spazi, tabulazioni o ritorni a capo come delimitatori. Per tutti gli altri contesti , consultare il Manuale di riferimento del linguaggio SQL.

Azione: Nessuno

Come posso risolverlo?

+2

La dichiarazione va bene. Mi sembra di ricordare che alcune versioni di Toad erano confuse dai commenti; funziona se rimuovi completamente il commit commentato? E stai correndo come una dichiarazione o come una sceneggiatura? –

+0

Non ho avuto problemi nell'esecuzione del DDL e del DML utilizzando SQL Plus (non Toad). –

+0

[Potrebbe essere rilevante] (https://support.software.dell.com/toad-for-oracle/kb/47096), sebbene abbia il commento sulla stessa riga. –

risposta

25

La dichiarazione che stai eseguendo è valida. L'errore sembra significare che Toad è compreso il punto e virgola finale come parte del comando, che provoca un ORA-00911 quando è incluso come parte di una nota - dal momento che è un separatore dichiarazione nel client, non fa parte della dichiarazione stessa.

può essere il seguente linea commentate che confonde rospo (as described here); o potrebbe essere perché si sta cercando di eseguire tutto come una singola istruzione, nel qual caso si può provare a utilizzare il comando Esegui script (F9 ) al posto della dichiarazione run (F5).

Basta rimuovere la riga commentata per risolvere il problema, ma se si è visto anche questo con un commit effettivo, è probabile che si stia utilizzando il metodo sbagliato per eseguire le istruzioni.

C'è un po 'più di informazioni su come Toad analizza il punto e virgola in un commento on this related question, ma io non sono abbastanza familiare con Toad per entrare in maggiori dettagli.

+0

@ Michael. - la tua risposta fornisce più dettagli del comando di corsa di Toad di me, quindi potrebbe essere utile, e potresti prendere in considerazione di non eliminarlo - non penso che sia bracconaggio * 8-) –

+0

grazie. questa risposta ha reso la mia giornata – hackmith

0

Se un carattere speciale diverso $, _, e # è usato nel nome di una colonna o una tabella, il nome deve essere racchiuso tra virgolette doppie. Link

+0

Da DDL e DML nella domanda, non è questo il caso. –

+0

@erakm Non uso alcun carattere speciale –

+0

pensare Option-2 che è nello stesso link che ho scritto nella mia risposta. Opzione 2: questo errore può verificarsi se hai incollato il tuo SQL nel tuo editor da un altro programma. A volte ci sono personaggi non stampabili che possono essere presenti. In questo caso, dovresti provare a ridigitare la tua dichiarazione SQL e poi rieseguirla. – erakm

0

ho incontrato la stessa cosa ultimamente. era solo a causa di spazi durante la copia di uno script da un documento allo sviluppatore sql. Ho dovuto rimuovere gli spazi e lo script ha funzionato.

Problemi correlati