sql >> Database teknologi >  >> RDS >> Oracle

Sådan løser du det manglende udtryk i ORA-00936

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 artikler
ORA-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

  1. Hvad kræver dette JavaScript?

  2. PostgreSQL - Skrivning af dynamisk sql i lagret procedure, der returnerer et resultatsæt

  3. Informationssystemer, data og information

  4. postgresql trådsikkerhed til midlertidige tabeller