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

Come risolvere l'espressione mancante ORA-00936

Descrizione

ORA-00936:espressione mancante è uno degli errori comuni che tutti coloro che lavorano in Oracle SQL devono aver dovuto affrontare un po' di tempo. Ciò accade generalmente quando ometti una cosa importante nell'istruzione Sql, ovvero hai omesso una parte importante di ciò che stavi cercando di eseguire

Riferimento :documentazione Oracle

Causa di ORA-00936:espressione mancante

Questo errore Oracle è principalmente correlato alle istruzioni SQL SELECT. Uno dei motivi ovvi è che l'elenco delle colonne selezionate è mancante o le espressioni nelle colonne selezionate sono incomplete.

Elenco di controllo da eseguire per risolvere l'errore di espressione mancante ORA-00936

(1) Succede quando dimentichi di elencare la colonna  nell'istruzione select

Select from mrp_details;

select from mrp_details;
ERROR at line 1:
ORA-00936: missing expression

Il modo corretto sarebbe elencare la colonna che desideri selezionare

Select col1,col2 from mrp_details; 

(2) A volte commettiamo errori nell'uso dell'istruzione Distinct. La seguente dichiarazione avrà esito negativo con 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

Avere due clausole distinte non ha senso e dà errore

Un altro esempio

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

distinto può essere utilizzato solo all'inizio

Quindi l'affermazione corretta sarebbe

select distinct a, b,c,d, e from tab_example
where b=’ABCD’ and c =1 and d= ‘JOHN’

(3) Questo errore è causato quando una parte dell'espressione viene omessa , alcuni esempi sono

select 2**8 from dual; 
select 2**8 from dual;
ERROR at line 1: ORA-00936: missing expression

** gli operatori funzionano in PLSQL ma non in SQL, dobbiamo usare la funzione Power per questo, quindi il modo corretto sarebbe

select power(2,3) from dual;
POWER(2,3)
--------
8

(4) Un altro esempio

select dept_name||' '|| from dept;
select dept_name||' '|| from dept
ERROR at line 1: ORA-00936: missing expression

Qui dimentichi di menzionare il nome della colonna dopo l'operatore di concatenazione, l'SQL corretto sarebbe

select dept_name||' '||dept_no from dept;

(5) Quando aggiungi virgole extra nell'elenco della colonna

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

Quindi dobbiamo ricontrollare l'istruzione SQL quando incontriamo questo errore e assicurarci di fare l'errore comune

(6) Questo errore si verificherà anche se si omette From nell'istruzione SQL

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

Qui non abbiamo menzionato la clausola from. L'istruzione SELECT ha tre parti:vale a dire:"SELECT->FROM->WHERE
Puoi omettere dove la clausola ma selezionare e da sono necessari

select dept_no, dept_name, ,dept_location from dept_table where dept_name like ‘A%’;

(7) Può anche verificarsi nella dichiarazione di inserimento come di seguito

insert into table1 (col1,col2) values as select col1,col2 from table2;
ERROR at line 1: ORA-00936: missing expression

Non abbiamo bisogno di valori come in questa affermazione

insert into table1 (col1,col2) select col1,col2 from table2;

(8) A volte possiamo confondere funzioni definite dall'utente e funzioni Oracle, e ciò può portare a una sintassi confusa che risulterebbe in un messaggio di errore. Quindi evitali

(9) Ci sono anche alcuni bug di Oracle
(a) Bug:4567818 base Bug#:4192148 – non pubblicato su 9207
(b) Bug:4212516 (non pubblicato) su Oracle 10.1.0.4.0.
Con questi bug, viene generato l'errore ORA-00936 quando la vista SELECT ON non riesce. Fondamentalmente, ORA-00936 viene generato quando viene creata una vista SQL da "crea o sostituisci vista MY_VIEW come seleziona t.*,other_tab_col dalla scheda t, other_tab". Questo crea una definizione della vista che non è corretta in DBA_VIEWS, generando così ORA- 00936 e possibili core dump. Per correggere i bug e risolvere ORA-00936, MetaLink offre queste soluzioni per la versione appropriata:
Correzione per 9.2.0.7 :La patch 4192148 è disponibile per i sistemi basati su Solaris (64bit) e AIX5L (64 bit). Correzione per 10.1.0.4 :
La patch 4212516 è disponibile per la maggior parte delle piattaforme.

In poche parole, ORA-00936 espressione mancante può essere risolto controllando attentamente la tua istruzione SQL.

Articoli correlati
ORA-00911:carattere non valido
ORA-03113:fine file sul canale di comunicazione
ORA-00257
ORA-27154:creazione post/attesa non riuscita durante l'avvio
/>ORA-29913 con tabelle esterne
ora-20001 in Gather schema stats on 11g(FND_HISTOGRAM_COLS)
Gestione simultanea:cleanup_node non riuscito a causa di ORA-01427