Zgodnie z OERR,ORA-00911 :nieprawidłowy znak
Przyczyna :identyfikatory nie mogą zaczynać się od żadnego znaku ASCII innego niż litery i cyfry. $#_ są również dozwolone po pierwszym znaku. Identyfikatory ujęte w cudzysłowy mogą zawierać dowolny znak inny niż podwójny cudzysłów. Alternatywne cudzysłowy (q’#…#’) nie mogą używać spacji, tabulatorów ani znaków powrotu karetki jako ograniczników. W przypadku wszystkich innych kontekstów zapoznaj się z podręcznikiem SQL Language Reference Manual.
Działanie :Brak
ORA-00911 wyjątek jest bardzo powszechny i zwykle występuje w przypadku typowych błędów składniowych. Niektóre z najczęstszych przyczyn i rozwiązania są podane poniżej
Lista kontrolna do uruchomienia w przypadku błędu ORA-00911
1 . Czasami, gdy kopiujesz sql z innego edytora, może zostać dodany niedrukowalny/specjalny znak (zwykle Ostry zamiast cytatu)
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
Prawidłowym sposobem jest usunięcie tych znaków i spróbować ponownie
SQL> select * from APPS.FND_PROFILE_OPTION_NAME where profile_name like 'USER%';
2. Ten błąd występuje, gdy w klauzuli SQL WHERE użyto znaku specjalnego, a wartość nie jest ujęta w pojedyncze cudzysłowy.
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
Prawidłowe zapytanie to
SQL> select * from APPS.FND_PROFILE_OPTION_NAME where profile_name like 'USER%';
3 . po dodaniu dodatkowego średnika (;) w celu zakończenia zapytania
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 ulepszyło te 11g i wyższe
select CHECKPOINT_CHANGE# from v$database;; select CHECKPOINT_CHANGE# from v$database; * ERROR at line 1: ORA-00933: SQL command not properly ended
Prawidłowy sposób to użycie pojedynczego średnika
SQL> select * from APPS.FND_PROFILE_OPTION_NAME where profile_name like 'USER%'; SQL> select CHECKPOINT_CHANGE# from v$database;
4 . po dodaniu średnika (;) w celu zakończenia zapytania w natychmiastowym wykonaniu 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 ulepszyło te 11g i wyższe
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
Prawidłowy sposób to
begin execute immediate 'select * from v$database'; end; /
5. występuje również podczas próby użycia znaku specjalnego w instrukcji SQL. Jeśli w nazwie kolumny lub tabeli Oracle użyto znaku specjalnego innego niż $, _ i #, nazwa musi być ujęta w podwójne cudzysłowy.
create table example (j% number); create table example (j% number) * ERROR at line 1: ORA-00911: invalid character
Właściwy sposób
Powinniśmy ująć je w podwójnych cudzysłowach „”
SQL> create table example ("j%" number); Table created.
6. po dodaniu średnika (;) w celu zakończenia zapytania wykonywanego z języka programowania takiego jak .net lub java
Mam nadzieję, że podoba Ci się ta treść, aby rozwiązać problem z ORA-00911:nieprawidłowy znak w bazie danych Oracle. Prześlij opinię, aby poprawić i umieścić więcej rzeczy w tym poście
Powiązane artykuły
ORA-00936 brak wyrażenia
ORA-01017:nieprawidłowa nazwa użytkownika/hasło
ora-29913:błąd podczas wykonywania objaśnienia odciexttableopen
Naruszono ograniczenie unikatowe ORA-00001
ORA-00257:błąd archiwizatora. Połącz tylko wewnętrznie, aż do zwolnienia.
ORA-03113:koniec pliku w kanale komunikacji
Dokumentacja Oracle