Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak rozwiązać brakujące wyrażenie ORA-00936

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

wybierz 2**8 z podwójnego; wybierz 2**8 z podwójnego;BŁĄD w linii 1:ORA-00936:brak wyrażenia

** 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ły
ORA-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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 2 sposoby formatowania liczby z wiodącymi zerami w Oracle

  2. TO_TIMESTAMP() Funkcja w Oracle

  3. Kolekcje Oracle PL/SQL — dodawanie elementów do istniejącej tabeli

  4. JSON_QUERY() Funkcja w Oracle

  5. Widok zmaterializowany a tabele:jakie są zalety?