Oracle
 sql >> Database >  >> RDS >> Oracle

ORA-00911:carattere non valido

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