Beskrivning
ORA-00936 :uttryck som saknas är ett av de vanligaste felen som alla som arbetar i Oracle SQL måste ha råkat ut för en tid. Detta händer vanligtvis när du utelämnar viktiga saker i SQL-satsen, dvs. du utelämnade en viktig del av det du försökte köra
Referens :Oracle-dokumentation
Orsak till ORA-00936:uttryck saknas
Detta Oracle-fel är huvudsakligen relaterat till SQL SELECT-satserna. En uppenbar anledning är att den valda kolumnlistan saknas eller att uttrycken i de valda kolumnerna är ofullständiga.
Kontrolllista som ska köras för att lösa ORA-00936 missing expression-felet
(1) Det händer när du glömmer att lista kolumnen i select-satsen
Select from mrp_details; select from mrp_details; ERROR at line 1: ORA-00936: missing expression
Det korrekta sättet skulle vara att lista kolumnen du vill välja
Select col1,col2 from mrp_details;
(2) Vi gör ibland misstag när vi använder Distinct statement. Följande uttalande kommer att misslyckas med ORA-00936
select distinct a, b,c,d, distinct e from tab_example where b=’ABCD’ and c =1 and d= ‘JOHN’ ERROR at line 1: ORA-00936: missing expression
Att ha två distinkta klausuler är inte vettigt och ger fel
Ett annat exempel
select a, b,c,d, distinct e from tab_example where b=’ABCD’ and c =1 and d= ‘JOHN’ ERROR at line 1: ORA-00936: missing expression
distinkt kan endast användas i början
Så korrekt påstående skulle vara
select distinct a, b,c,d, e from tab_example where b=’ABCD’ and c =1 and d= ‘JOHN’
(3) Detta fel orsakas när en del av uttrycket utelämnas, några exempel är
select 2**8 from dual; select 2**8 from dual; ERROR at line 1: ORA-00936: missing expression
** Operatörer fungerar i PLSQL men inte i SQL, vi måste använda Power-funktionen för det, så korrekt sätt skulle vara
select power(2,3) from dual; POWER(2,3) -------- 8
(4) Ett annat exempel
select dept_name||' '|| from dept; select dept_name||' '|| from dept ERROR at line 1: ORA-00936: missing expression
Här glömmer du att nämna kolumnnamnet efter sammanlänkningsoperatorn, korrekt SQL skulle vara
select dept_name||' '||dept_no from dept;
(5) När du lägger till extra kommatecken i kolumnlistan
select dept_no, dept_name, ,dept_location from dept_table; select dept_no, dept_name, ,dept_location from dept_table; ERROR at line 1: ORA-00936: missing expression
Så vi måste dubbelkolla SQL-satsen när vi träffar det här felet och se till att vi gör det vanliga misstaget
(6) Detta fel kommer också att uppstå om du utelämnar From i SQL-satsen
select dept_no, dept_name, ,dept_location where dept_name like ‘A%’; select dept_no, dept_name, ,dept_location where dept_name like ‘A%’; ERROR at line 1: ORA-00936: missing expression
Här missade vi att nämna from-satsen.SELECT-satsen har tre delar:till exempel:"SELECT->FROM->WHERE
Du kan utelämna var-satsen men välj och från är nödvändiga
select dept_no, dept_name, ,dept_location from dept_table where dept_name like ‘A%’;
(7) Det kan också förekomma i infoga uttalande som nedan
insert into table1 (col1,col2) values as select col1,col2 from table2; ERROR at line 1: ORA-00936: missing expression
Vi behöver inte värden som i detta uttalande
insert into table1 (col1,col2) select col1,col2 from table2;
(8) Ibland kan vi blanda ihop användardefinierade funktioner och Oracle-funktioner, och att göra det kan leda till förvirrad syntax som skulle resultera i ett felmeddelande. Så undvik dem
(9) Det finns Oracle några buggar också
(a) Bug:4567818 base Bug#:4192148 – opublicerad på 9207
(b) Bug:4212516 (opublicerad) på oracle 10.1.0.4.0.
Med dessa buggar, orsakas ORA-00936-felet när vyn SELECT ON misslyckas. I grund och botten kastas ORA-00936 när en SQL-vy skapas från "skapa eller ersätt vy MY_VIEW som välj t.*,other_tab_col from tab t, other_tab". Detta skapar en vydefinition som är felaktig i DBA_VIEWS, vilket kastar ORA- 00936 och möjliga kärndumpar. För att fixa buggarna och lösa ORA-00936 erbjuder MetaLink dessa lösningar för lämplig version:
Fix för 9.2.0.7 :Patch 4192148 är tillgänglig för Solaris (64bit) och AIX5L-baserade system (64-bitars). Fix för 10.1.0.4 :
Patch 4212516 är tillgänglig för de flesta plattformarna.
I ett nötskal, ORA-00936 saknas uttryck kan lösas genom att noggrant kontrollera din SQL-sats.
Relaterade artiklarORA-00911:ogiltigt tecken
ORA-03113:slutet av filen på kommunikationskanalen
ORA-00257
ORA-27154:skapande av post/vänta misslyckades under uppstart
ORA-29913 med externa tabeller
ora-20001 i Samla schemastatistik på 11g(FND_HISTOGRAM_COLS)
Concurrent Manager:cleanup_node misslyckades på grund av ORA-01427