sql >> Databasteknik >  >> RDS >> Oracle

ORA-00911:ogiltigt tecken

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


  1. SQL Server ALL Operatör förklaras

  2. Analysera I/O-prestanda för SQL Server

  3. SQL Server:VÄLJ endast raderna med MAX(DATE)

  4. Ange kolumnvärden som kolumnnamn i SQL-frågeresultatet