Secondo OERR,ORA-00911 :carattere non valido
Causa :gli identificatori non possono iniziare con alcun carattere ASCII diverso da lettere e numeri. $#_ sono consentiti anche dopo il primo carattere. Gli identificatori racchiusi tra virgolette doppie possono contenere qualsiasi carattere diverso da virgolette doppie. Le virgolette alternative (q'#…#') non possono utilizzare spazi, tabulazioni o ritorni a capo come delimitatori. Per tutti gli altri contesti, consulta il Manuale di riferimento del linguaggio SQL.
Azione :Nessuno
ORA-00911 l'eccezione è molto comune e di solito si verifica per errori di sintassi comuni. Di seguito sono riportate alcune delle cause e soluzioni comuni
Elenco di controllo da eseguire per l'errore ORA-00911
1 . A volte, quando copi sql da un altro editor, potrebbero essere aggiunti caratteri non stampabili/speciali (di solito Acuti invece di virgolette)
SQL> select * from APPS.FND_PROFILE_OPTION_NAME where profile_name like 'USER%`; select * from APPS.FND_PROFILE_OPTION_NAME where profile_name like 'USER%`; * ERROR at line 1: ORA-00911: invalid character
Il modo corretto è rimuovere quei caratteri e riprovare
SQL> select * from APPS.FND_PROFILE_OPTION_NAME where profile_name like 'USER%';
2. Questo errore si verifica quando viene utilizzato un carattere speciale in una clausola SQL WHERE e il valore non è racchiuso tra virgolette singole.
SQL> select * from APPS.FND_PROFILE_OPTION_NAME where profile_name like USER%; select * from APPS.FND_PROFILE_OPTION_NAME where profile_name like USER%; * ERROR at line 1: ORA-00911: invalid character
La query corretta è
SQL> select * from APPS.FND_PROFILE_OPTION_NAME where profile_name like 'USER%';
3 . quando viene aggiunto un punto e virgola in più (;) per terminare la query
SQL> select * from APPS.FND_PROFILE_OPTION_NAME where profile_name like 'USER%';; select * from APPS.FND_PROFILE_OPTION_NAME where profile_name like 'USER%'; * ERROR at line 1: ORA-00911: invalid character
Oracle ha migliorato questo 11g e oltre
select CHECKPOINT_CHANGE# from v$database;; select CHECKPOINT_CHANGE# from v$database; * ERROR at line 1: ORA-00933: SQL command not properly ended
Il modo corretto è utilizzare un punto e virgola singolo
SQL> select * from APPS.FND_PROFILE_OPTION_NAME where profile_name like 'USER%'; SQL> select CHECKPOINT_CHANGE# from v$database;
4 . quando viene aggiunto punto e virgola (;) per terminare la query in esegui immediatamente di pl/sql
SQL> begin execute immediate 'select * from v$database;'; end; / begin * ERROR at line 1: ORA-00911: invalid character ORA-06512: at line 2
Oracle ha migliorato questo 11g e oltre
begin execute immediate 'select * from v$database;'; end; / begin * ERROR at line 1: ORA-00933: SQL command not properly ended ORA-06512: at line 2
Il modo corretto è
begin execute immediate 'select * from v$database'; end; /
5. si verifica anche quando si tenta di utilizzare un carattere speciale in un'istruzione SQL. Se nel nome di una colonna o di una tabella Oracle viene utilizzato un carattere speciale diverso da $, _ e #, il nome deve essere racchiuso tra virgolette doppie.
create table example (j% number); create table example (j% number) * ERROR at line 1: ORA-00911: invalid character
Modo corretto
Dovremmo racchiuderli tra virgolette “”
SQL> create table example ("j%" number); Table created.
6. quando viene aggiunto il punto e virgola (;) per terminare l'esecuzione della query da un linguaggio di programmazione come .net o java
Spero che questo contenuto ti piaccia per risolvere l'ORA-00911:carattere non valido nel database di Oracle. Fornisci il feedback per migliorare e includere più elementi in questo post
Articoli correlati
ORA-00936 espressione mancante
ORA-01017:nome utente/password non validi
ora-29913:errore nell'esecuzione di odciexttableopen callout
Vincolo univoco ORA-00001 violato
ORA-00257:errore dell'archiviatore. Connetti solo interni, fino a quando non viene liberato.
ORA-03113:fine file sul canale di comunicazione
Documentazione Oracle