Opis
ORA-00936:brak wyrażenia jest jednym z typowych błędów, z którymi musieli się zmierzyć wszyscy pracujący w Oracle SQL. Zwykle dzieje się tak, gdy pominiesz ważną rzecz w instrukcji SQL, tj. pominiesz ważną część tego, co próbujesz uruchomić
Odniesienie :Dokumentacja Oracle
Przyczyna ORA-00936:brak wyrażenia
Ten błąd Oracle jest związany głównie z instrukcjami SQL SELECT. Jednym z oczywistych powodów jest brak listy wybranych kolumn lub wyrażenia w wybranych kolumnach są niekompletne.
Lista kontrolna do uruchomienia, aby rozwiązać błąd brakującego wyrażenia ORA-00936
(1) Dzieje się tak, gdy zapomnisz wymienić kolumnę w instrukcji select
Wybierz z mrp_details;wybierz z mrp_details;BŁĄD w wierszu 1:ORA-00936:brak wyrażenia
Prawidłowy sposób to wylistowanie kolumny, którą chcesz wybrać
Wybierz col1,col2 z mrp_details;
(2) Czasami popełniamy błąd w używaniu oświadczenia Distinct. Następujące oświadczenie nie powiedzie się z ORA-00936
wybierz różne a, b,c,d, różne e z tab_examplewhere b=’ABCD’ oraz c =1 i d=‘JOHN’ERROR w wierszu 1:ORA-00936:brak wyrażenia
Posiadanie dwóch odrębnych klauzul nie ma sensu i powoduje błąd
Inny przykład
wybierz a, b,c,d, różne e od tab_examplewhere b=’ABCD’ oraz c =1 i d=‘JOHN’ERROR w wierszu 1:ORA-00936:brak wyrażenia
Osobny może być użyty tylko na początku
Więc poprawne stwierdzenie byłoby
wybierz różne a, b,c,d, e z tab_examplewhere b=’ABCD’ i c =1 i d=’JAN”
(3) Ten błąd jest spowodowany pominięciem części wyrażenia , niektóre przykłady to
** operatory działają w PLSQL, ale nie w SQL, musimy użyć do tego funkcji Power, więc prawidłowy sposób byłby
wybierz moc (2,3) z podwójnej; MOC (2,3)--------8
(4) Inny przykład
wybierz nazwę_działu||' '|| z działu;wybierz nazwę_działu||' '|| od deptERROR w linii 1:ORA-00936:brak wyrażenia
W tym miejscu zapomnisz podać nazwę kolumny po operatorze konkatenacji, poprawny kod SQL to
wybierz nazwę_działu||' '||dział_nr od działu;
(5) Po dodaniu dodatkowych przecinków na liście w kolumnie
wybierz nr_działu, nazwa_działu, ,lokalizacja_działu z tabeli_działu;wybierz nr_działu, nazwa_działu, ,położenie_działu z tabeli_działu;BŁĄD w wierszu 1:ORA-00936:brak wyrażenia
Dlatego musimy dokładnie sprawdzić instrukcję SQL, gdy napotkamy ten błąd i upewnić się, że popełniamy typowy błąd
(6) Ten błąd pojawi się również, jeśli pominiesz From w instrukcji SQL
wybierz nr_działu, nazwa_działu, ,lokalizacja_działu, gdzie nazwa_działu, np. „A%”;wybierz nr_działu, nazwa_działu, ,lokalizacja_działu, gdzie nazwa_działu, np. „A%”;BŁĄD w wierszu 1:ORA-00936:brak wyrażenia
Tutaj nie wspomnieliśmy o klauzuli from. Instrukcja SELECT składa się z trzech części:a mianowicie:„SELECT->FROM->WHERE
Możesz pominąć klauzulę where, ale select i from są konieczne
wybierz numer_działu, nazwa_działu, ,lokalizacja_działu z tabeli_działu, gdzie nazwa_działu jak „A%”;
(7) Może również wystąpić w instrukcji insert, jak poniżej
wstaw do tabeli1 (col1,col2) wartości jako wybierz col1,col2 z tabeli2;BŁĄD w wierszu 1:ORA-00936:brak wyrażenia
Nie potrzebujemy wartości, jak w tym oświadczeniu
wstaw do tabeli1 (col1,col2) wybierz col1,col2 z tabeli2;
(8) Czasami możemy mieszać funkcje zdefiniowane przez użytkownika z funkcjami Oracle, co może prowadzić do pomylenia składni, co spowoduje wyświetlenie komunikatu o błędzie. Unikaj ich
(9) Istnieją również pewne błędy Oracle
(a) Bug:4567818 podstawowy Bug#:4192148 – nieopublikowany w 9207
(b) Bug:4212516 (nieopublikowany) w oracle 10.1.0.4.0.
Z tymi błędami, błąd ORA-00936 jest zgłaszany, gdy widok SELECT ON nie powiedzie się. Zasadniczo ORA-00936 jest generowany, gdy widok SQL jest tworzony z „utwórz lub zamień widok MY_VIEW jako select t.*,other_tab_col z karty t, other_tab”. Powoduje to utworzenie definicji widoku, która jest nieprawidłowa w DBA_VIEWS, tym samym rzucając ORA- 00936 i możliwe zrzuty pamięci. Aby naprawić błędy i rozwiązać ORA-00936, MetaLink oferuje następujące rozwiązania dla odpowiedniej wersji:
Poprawka dla 9.2.0.7 :Patch 4192148 jest dostępny dla systemów Solaris (64bit) i AIX5L (64-bitowy). Poprawka dla 10.1.0.4 :
Patch 4212516 jest dostępny dla większości platform.
Krótko mówiąc, ORA-00936 brak wyrażenia można rozwiązać, dokładnie sprawdzając instrukcję SQL.
Powiązane artykułyORA-00911:nieprawidłowy znak
ORA-03113:koniec pliku w kanale komunikacji
ORA-00257
ORA-27154:tworzenie post/wait nie powiodło się podczas uruchamiania
ORA-29913 z tabelami zewnętrznymi
ora-20001 w Zbierz statystyki schematu na 11g(FND_HISTOGRAM_COLS)
Concurrent Manager:cleanup_node nie powiodło się z powodu ORA-01427