Описание
ORA-00936 :липсващ израз е една от често срещаните грешки, които всеки работещ в Oracle SQL трябва да е срещал известно време. Това обикновено се случва, когато пропуснете важно нещо в оператора Sql, т.е. пропуснете важна част от това, което се опитвате да изпълните
Справка :Документация на Oracle
Причина за ORA-00936 :липсващ израз
Тази грешка на Oracle е свързана основно с операторите на SQL SELECT. Една очевидна причина е, че списъкът с избрани колони липсва или изразите в избраните колони са непълни.
Проверете списъка за изпълнение, за да разрешите грешката при липсващ израз ORA-00936
(1) Това се случва, когато забравите да посочите колоната в оператора за избор
Select from mrp_details; select from mrp_details; ERROR at line 1: ORA-00936: missing expression
Правилният начин би бил изброяване на колоната, която искате да изберете
Select col1,col2 from mrp_details;
(2) Понякога правим грешка в използването на израза Distinct. Следното изявление ще се провали с 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
Наличието на две отделни клаузи няма смисъл и дава грешка
Друг пример
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
different може да се използва само в началото
Така че правилното твърдение би било
select distinct a, b,c,d, e from tab_example where b=’ABCD’ and c =1 and d= ‘JOHN’
(3) Тази грешка се причинява, когато част от израза е пропусната, някои примери са
select 2**8 from dual; select 2**8 from dual; ERROR at line 1: ORA-00936: missing expression
** операторите работят в PLSQL, но не и в SQL, трябва да използваме функцията Power за тях, така че правилният начин би бил
select power(2,3) from dual; POWER(2,3) -------- 8
(4) Друг пример
select dept_name||' '|| from dept; select dept_name||' '|| from dept ERROR at line 1: ORA-00936: missing expression
Тук забравяте да споменете името на колоната след оператора за конкатенация, правилният SQL би бил
select dept_name||' '||dept_no from dept;
(5) Когато добавите допълнителни запетаи в списъка с колона
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
Така че трябва да проверим отново SQL оператора, когато ударим тази грешка, и да се уверим, че правим често срещаната грешка
(6) Тази грешка ще се появи и ако пропуснете From в 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
Тук пропуснахме да споменем клаузата from. Изразът SELECT има три части:„SELECT->FROM->WHERE
Можете да пропуснете клаузата where, но select и from са необходими
select dept_no, dept_name, ,dept_location from dept_table where dept_name like ‘A%’;
(7) Може да се появи и в израза за вмъкване, както е по-долу
insert into table1 (col1,col2) values as select col1,col2 from table2; ERROR at line 1: ORA-00936: missing expression
Не се нуждаем от стойности, както в това изявление
insert into table1 (col1,col2) select col1,col2 from table2;
(8) Понякога можем да сбъркаме дефинирани от потребителя функции и функции на Oracle и това може да доведе до объркан синтаксис, който би довел до съобщение за грешка. Така че избягвайте ги
(9) Има и някои грешки в Oracle
(a) Грешка:4567818 базова грешка №:4192148 – непубликувана на 9207
(b) Грешка:4212516 (непубликувана) на oracle 10.1.0.4.0.
С тези грешки се извежда грешка ORA-00936, когато изгледът SELECT ON не успее. По принцип ORA-00936 се хвърля, когато SQL изглед се създава от „създаване или замяна на изглед MY_VIEW като изберете t.*,other_tab_col от раздел t, other_tab“. Това създава дефиниция на изглед, която е неправилна в DBA_VIEWS, като по този начин хвърля ORA- 00936 и възможни изхвърляния на ядрото. За да поправите грешките и да разрешите ORA-00936, MetaLink предлага тези решения за съответната версия:
Поправка за 9.2.0.7:Пач 4192148 е наличен за системи, базирани на Solaris (64 бита) и AIX5L (64-битова). Поправка за 10.1.0.4 :
Пач 4212516 е налице за повечето платформи.
Накратко, ORA-00936 липсва израз може да бъде разрешен чрез внимателно проверка на вашия SQL израз.
Сродни статииORA-00911:невалиден знак
ORA-03113:край на файла на комуникационен канал
ORA-00257
ORA-27154:неуспешно публикуване/изчакване на създаването по време на стартиране
ORA-29913 с външни таблици
ora-20001 в Събиране на статистически данни за схемата на 11g(FND_HISTOGRAM_COLS)
Едновременен мениджър:cleanup_node неуспешно поради ORA-01427