I henhold til OERR,ORA-00911 :ugyldigt tegn
Årsag :identifikatorer må ikke starte med andre ASCII-tegn end bogstaver og tal. $#_ er også tilladt efter det første tegn. Identifikatorer omgivet af dobbelte anførselstegn kan indeholde et hvilket som helst andet tegn end et dobbelt anførselstegn. Alternative anførselstegn (q'#...#') kan ikke bruge mellemrum, tabulatorer eller vognretur som skilletegn. For alle andre sammenhænge, se SQL Language Reference Manual.
Handling :Ingen
ORA-00911 undtagelse er meget almindelig og forekommer normalt for almindelige syntaksfejl. Nogle af de almindelige årsager og løsningen er angivet nedenfor
Tjek listen for at køre for ORA-00911-fejl
1 . Nogle gange, når du kopierer sql fra en anden editor, kan den tilføjes ikke-udskrivbare/specielle tegn (normalt Akut i stedet for 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
Den korrekte måde er at fjerne disse tegn og prøve igen
SQL> select * from APPS.FND_PROFILE_OPTION_NAME where profile_name like 'USER%';
2. Denne fejl opstår, når der bruges et specialtegn i en SQL WHERE-sætning, og værdien ikke er omgivet af enkelte anførselstegn.
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 korrekte forespørgsel er
SQL> select * from APPS.FND_PROFILE_OPTION_NAME where profile_name like 'USER%';
3 . når et ekstra semikolon (;) tilføjes for at afslutte forespørgslen
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 forbedret denne 11g og derover
select CHECKPOINT_CHANGE# from v$database;; select CHECKPOINT_CHANGE# from v$database; * ERROR at line 1: ORA-00933: SQL command not properly ended
Den korrekte måde er at bruge enkelt 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 (;) tilføjes for at afslutte forespørgslen i execute umiddelbart af 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 forbedret denne 11g og derover
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
Den korrekte måde er
begin execute immediate 'select * from v$database'; end; /
5. det forekommer også, når du forsøger at bruge et specialtegn i en SQL-sætning. Hvis et andet specialtegn end $, _ og # bruges i navnet på en kolonne eller orakeltabel, skal navnet være omgivet af dobbelte anførselstegn.
create table example (j% number); create table example (j% number) * ERROR at line 1: ORA-00911: invalid character
Korrekt måde
Vi bør sætte dem i dobbelte anførselstegn ""
SQL> create table example ("j%" number); Table created.
6. når semikolon (;) tilføjes for at afslutte forespørgslen, der udføres fra programmeringssprog som .net eller java
Håber du kan lide dette indhold for at løse ORA-00911:ugyldig karakter i oracle-databasen. Giv venligst feedback for at forbedre og inkludere flere ting i dette indlæg
Relaterede artikler
ORA-00936 mangler udtryk
ORA-01017:ugyldigt brugernavn/adgangskode
ora-29913:fejl under udførelse af odciexttableopen callout
ORA-00001 unik begrænsning overtrådt
ORA-00257:arkiveringsfejl. Tilslut kun internt, indtil frigivet.
ORA-03113:slutningen af filen på kommunikationskanalen
Oracle-dokumentation