Beskrivelse
ORA-00936 :manglende udtryk er en af de almindelige fejl, som alle arbejder i Oracle SQL må have stået over for nogen tid. Dette sker generelt, når du udelader vigtige ting i SQL-sætningen, dvs. du har udeladt en vigtig del af det, du prøvede at køre
Reference :Oracle-dokumentation
Årsag til ORA-00936:manglende udtryk
Denne Oracle-fejl er hovedsageligt relateret til SQL SELECT-sætningerne. En åbenlys årsag er, at den valgte kolonneliste mangler, eller at udtryk i de valgte kolonner er ufuldstændige.
Tjek liste, der skal køres for at løse ORA-00936 manglende udtryksfejl
(1) Det sker, når du glemmer at angive kolonnen i select-sætningen
Select from mrp_details; select from mrp_details; ERROR at line 1: ORA-00936: missing expression
Den korrekte måde ville være en liste over den kolonne, du vil vælge
Select col1,col2 from mrp_details;
(2) Vi begår nogle gange fejl i brugen af Distinct-erklæringen. Følgende erklæring vil mislykkes 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
At have to adskilte klausuler giver ikke mening og giver fejl
Et andet eksempel
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
distinct kan kun bruges i starten
Så det korrekte udsagn ville være
select distinct a, b,c,d, e from tab_example where b=’ABCD’ and c =1 and d= ‘JOHN’
(3) Denne fejl opstår, når en del af udtrykket er udeladt, nogle eksempler er
select 2**8 from dual; select 2**8 from dual; ERROR at line 1: ORA-00936: missing expression
** operatører fungerer i PLSQL, men ikke i SQL, vi skal bruge Power-funktionen til det, så den korrekte måde ville være
select power(2,3) from dual; POWER(2,3) -------- 8
(4) Et andet eksempel
select dept_name||' '|| from dept; select dept_name||' '|| from dept ERROR at line 1: ORA-00936: missing expression
Her glemmer du at nævne kolonnenavnet efter sammenkædningsoperatoren, den korrekte SQL ville være
select dept_name||' '||dept_no from dept;
(5) Når du tilføjer ekstra kommaer i kolonnelisten
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 skal dobbelttjekke SQL-sætningen, når vi rammer denne fejl, og sikre os, at vi laver den almindelige fejl
(6) Denne fejl kommer også, hvis du udelader From i SQL-sætningen
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
Her savnede vi at nævne fra-sætningen.SELECT-sætningen har tre dele:"SELECT->FROM->WHERE
Du kan udelade hvor-sætningen, men vælg og fra er nødvendige
select dept_no, dept_name, ,dept_location from dept_table where dept_name like ‘A%’;
(7) Det kan også forekomme i insert statement som nedenfor
insert into table1 (col1,col2) values as select col1,col2 from table2; ERROR at line 1: ORA-00936: missing expression
Vi har ikke brug for værdier som i denne erklæring
insert into table1 (col1,col2) select col1,col2 from table2;
(8) Vi kan nogle gange blande brugerdefinerede funktioner og Oracle-funktioner, og det kan føre til forvirret syntaks, der ville resultere i en fejlmeddelelse. Så undgå dem
(9) Der er også nogle Oracle-fejl
(a) Bug:4567818 base Bug#:4192148 – upubliceret på 9207
(b) Bug:4212516 (upubliceret) på oracle 10.1.0.4.0.
Med disse fejl opstår ORA-00936-fejlen, når SELECT ON-visningen mislykkes. Grundlæggende kastes ORA-00936, når en SQL-visning oprettes fra "opret eller erstat visning MY_VIEW som vælg t.*,other_tab_col from tab t, other_tab". Dette skaber en visningsdefinition, der er forkert i DBA_VIEWS, og kaster således ORA- 00936 og mulige kernedumps. For at rette fejlene og løse ORA-00936 tilbyder MetaLink disse løsninger til den relevante version:
Fix til 9.2.0.7 :Patch 4192148 er tilgængelig til Solaris (64bit) og AIX5L baserede systemer (64-bit). Rettelse til 10.1.0.4 :
Patch 4212516 er tilgængelig til de fleste platforme.
I nøddeskal, ORA-00936 mangler udtryk kan løses ved omhyggeligt at tjekke din SQL-sætning.
Relaterede artiklerORA-00911:ugyldigt tegn
ORA-03113:slutningen af filen på kommunikationskanalen
ORA-00257
ORA-27154:post/vent oprettelse mislykkedes under opstart
ORA-29913 med eksterne tabeller
ora-20001 i Saml skemastatistik på 11g(FND_HISTOGRAM_COLS)
Concurrent Manager:cleanup_node mislykkedes på grund af ORA-01427