Enligt OERR,ORA-00911 :ogiltigt tecken
Orsak :identifierare får inte börja med något annat ASCII-tecken än bokstäver och siffror. $#_ är också tillåtna efter det första tecknet. Identifierare som omges av dubbla citattecken kan innehålla vilket tecken som helst förutom dubbla citattecken. Alternativa citattecken (q'#...#') kan inte använda mellanslag, tabbar eller vagnretur som avgränsare. För alla andra sammanhang, se SQL Language Reference Manual.
Åtgärd :Inga
ORA-00911 undantag är mycket vanligt och förekommer vanligtvis för vanliga syntaxfel. Några av de vanligaste orsakerna och lösningen ges nedan
Kontrolllista för ORA-00911-fel
1 . Ibland när du kopierar sql från en annan redigerare kan det läggas till icke-utskrivbara/speciella tecken (vanligtvis Akut istället för citat)
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
Det korrekta sättet är att ta bort dessa tecken och försöka igen
SQL> select * from APPS.FND_PROFILE_OPTION_NAME where profile_name like 'USER%';
2. Det här felet uppstår när ett specialtecken används i en SQL WHERE-sats och värdet inte omges av enkla citattecken.
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
Den korrekta frågan är
SQL> select * from APPS.FND_PROFILE_OPTION_NAME where profile_name like 'USER%';
3 . när ett extra semikolon (;) läggs till för att avsluta frågan
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 har förbättrat denna 11g och högre
select CHECKPOINT_CHANGE# from v$database;; select CHECKPOINT_CHANGE# from v$database; * ERROR at line 1: ORA-00933: SQL command not properly ended
Det korrekta sättet är att använda ett semikolon
SQL> select * from APPS.FND_PROFILE_OPTION_NAME where profile_name like 'USER%'; SQL> select CHECKPOINT_CHANGE# from v$database;
4 . när semikolon (;) läggs till för att avsluta frågan i exekvering omedelbart av 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 har förbättrat denna 11g och högre
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
Det korrekta sättet är
begin execute immediate 'select * from v$database'; end; /
5. det inträffar också när du försöker använda ett specialtecken i en SQL-sats. Om ett annat specialtecken än $, _ och # används i namnet på en kolumn eller orakeltabell, måste namnet omges av dubbla citattecken.
create table example (j% number); create table example (j% number) * ERROR at line 1: ORA-00911: invalid character
Rätt sätt
Vi bör omge dem med dubbla citattecken ""
SQL> create table example ("j%" number); Table created.
6. när semikolon (;) läggs till för att avsluta frågan som körs från programmeringsspråk som .net eller java
Hoppas du gillar det här innehållet för att lösa ORA-00911:ogiltigt tecken i Oracle-databasen. Vänligen ge feedback för att förbättra och inkludera fler saker i det här inlägget
Relaterade artiklar
ORA-00936 saknas uttryck
ORA-01017:ogiltigt användarnamn/lösenord
ora-29913:fel vid exekvering av odciexttableopen-utlysningen
ORA-00001 unik begränsning överträtt
ORA-00257:arkiveringsfel. Anslut endast internt tills det frigörs.
ORA-03113:slutet av filen på kommunikationskanalen
Oracle-dokumentation