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