sql >> Databáze >  >> RDS >> Oracle

ORA-00911:neplatný znak

Podle OERR,ORA-00911 :neplatný znak

Příčina :identifikátory nesmí začínat žádným jiným znakem ASCII než písmeny a číslicemi. $#_ jsou také povoleny za prvním znakem. Identifikátory uzavřené dvojitými uvozovkami mohou obsahovat jakýkoli jiný znak než dvojité uvozovky. Alternativní uvozovky (q’#…#’) nemohou jako oddělovače používat mezery, tabulátory ani znaky konce řádku. Všechny ostatní souvislosti naleznete v Referenční příručce jazyka SQL.
Akce :Žádný

ORA-00911 výjimka je velmi častá a obvykle se vyskytuje u běžných syntaktických chyb. Některé z běžných příčin a řešení jsou uvedeny níže

Chcete-li spustit chybu ORA-00911, zkontrolujte seznam

1 . Někdy, když zkopírujete sql z jiného editoru, může být přidán netisknutelný/speciální znak (obvykle Acute místo citace)

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

Správný způsob je odstranit tyto znaky a zkusit to znovu

SQL> select * from APPS.FND_PROFILE_OPTION_NAME where profile_name like 'USER%';

2. K této chybě dochází, když je v klauzuli SQL WHERE použit speciální znak a hodnota není uzavřena v jednoduchých uvozovkách.

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 

Správný dotaz je

SQL> select * from APPS.FND_PROFILE_OPTION_NAME where profile_name like 'USER%';

3 . když se přidá středník (;) navíc k ukončení dotazu

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 tuto 11g a vyšší verzi vylepšil

select CHECKPOINT_CHANGE# from v$database;;

select CHECKPOINT_CHANGE# from v$database;
*
ERROR at line 1:
ORA-00933: SQL command not properly ended 

Správný způsob je použít jeden středník

SQL> select * from APPS.FND_PROFILE_OPTION_NAME where profile_name like 'USER%';
SQL> select CHECKPOINT_CHANGE# from v$database;

4 . když se přidá středník (;) pro ukončení dotazu v příkazu prompt 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 tuto 11g a vyšší verzi vylepšil

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 

Správný způsob je

begin
execute immediate 'select * from v$database';
end;
/

5. dochází také při pokusu o použití speciálního znaku v příkazu SQL. Pokud je v názvu sloupce nebo tabulky oracle použit speciální znak jiný než $, _ a #, musí být název uzavřen do dvojitých uvozovek.

create table example (j% number);  

create table example (j% number) 
*
ERROR at line 1: 
ORA-00911: invalid character 

Správný způsob

Měli bychom je uzavřít do dvojitých uvozovek „“

 SQL> create table example ("j%" number);  
Table created.  

6. když se přidá středník (;), aby se ukončil dotaz spouštějící se z programovacího jazyka jako .net nebo java

Doufám, že se vám tento obsah líbí k vyřešení problému ORA-00911:neplatný znak v databázi Oracle. Poskytněte nám prosím zpětnou vazbu pro zlepšení a zahrňte do tohoto příspěvku více věcí

Související články
Chybí výraz ORA-00936

ORA-01017:neplatné uživatelské jméno/heslo

ora-29913:chyba při provádění odciexttableopen callout

Porušeno jedinečné omezení ORA-00001

ORA-00257:Chyba archivátoru. Připojte pouze interní, dokud se neuvolní.

ORA-03113:konec souboru na komunikačním kanálu

Dokumentace Oracle


  1. oracle -- Rozdělte více hodnot oddělených čárkou v tabulce Oracle na více řádků

  2. Průvodce pro pochopení vzorců škálování databáze

  3. Jak vytvořit databázi v MySQL

  4. Získejte název měsíce od data v Oracle