Popis
ORA-00936 :chybějící výraz je jednou z běžných chyb, kterým musel nějaký čas čelit každý, kdo pracuje v Oracle SQL. To se obvykle stává, když vynecháte důležitou věc v příkazu SQL, tj. vynecháte důležitou část toho, co jste se snažili spustit
Reference :Dokumentace Oracle
Příčina ORA-00936:chybějící výraz
Tato chyba Oracle souvisí hlavně s příkazy SQL SELECT. Jeden zřejmý důvod je, že chybí seznam vybraných sloupců nebo jsou výrazy ve vybraných sloupcích neúplné.
Chcete-li spustit kontrolní seznam, vyřešte chybu chybějícího výrazu ORA-00936
(1) Stává se to, když zapomenete uvést sloupec v příkazu select
Select from mrp_details; select from mrp_details; ERROR at line 1: ORA-00936: missing expression
Správným způsobem by bylo vypsat sloupec, který chcete vybrat
Select col1,col2 from mrp_details;
(2) Někdy děláme chybu při použití výrazu Distinct. Následující příkaz selže s 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
Mít dvě odlišné klauzule nedává smysl a dává chybu
Další příklad
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
odlišné lze použít pouze na začátku
Takže správné tvrzení by bylo
select distinct a, b,c,d, e from tab_example where b=’ABCD’ and c =1 and d= ‘JOHN’
(3) Tato chyba je způsobena, když je část výrazu vynechána, některé příklady jsou
select 2**8 from dual; select 2**8 from dual; ERROR at line 1: ORA-00936: missing expression
** Operátory fungují v PLSQL, ale ne v SQL, musíme pro to použít funkci Power, takže správný způsob by byl
select power(2,3) from dual; POWER(2,3) -------- 8
(4) Další příklad
select dept_name||' '|| from dept; select dept_name||' '|| from dept ERROR at line 1: ORA-00936: missing expression
Zde zapomenete uvést název sloupce za operátorem zřetězení, správný SQL by byl
select dept_name||' '||dept_no from dept;
(5) Když přidáte další čárky do seznamu sloupce
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
Musíme tedy dvakrát zkontrolovat příkaz SQL, když narazíme na tuto chybu, a ujistit se, že děláme běžnou chybu
(6) Tato chyba se také objeví, pokud v příkazu SQL vynecháte From
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
Zde jsme vynechali zmínku o klauzuli from. Příkaz SELECT má tři části:to wit:“SELECT->FROM->WHERE
Můžete vynechat klauzuli where, ale select a from jsou nezbytné
select dept_no, dept_name, ,dept_location from dept_table where dept_name like ‘A%’;
(7) Může se také objevit v příkazu insert jako níže
insert into table1 (col1,col2) values as select col1,col2 from table2; ERROR at line 1: ORA-00936: missing expression
Nepotřebujeme hodnoty jako v tomto prohlášení
insert into table1 (col1,col2) select col1,col2 from table2;
(8) Někdy můžeme zaměnit uživatelem definované funkce a funkce Oracle, což může vést ke zmatené syntaxi, která by vedla k chybové zprávě. Vyvarujte se jim proto
(9) V Oracle jsou také některé chyby
(a) Chyba:4567818 základní chyba č.:4192148 – nezveřejněno na 9207
(b) Chyba:4212516 (nepublikováno) na oracle 10.1.0.4.0.
S těmito chybami dojde k chybě ORA-00936, když selže zobrazení SELECT ON. V zásadě je ORA-00936 vyvoláno, když je vytvořen pohled SQL z „vytvořit nebo nahradit pohled MY_VIEW jako select t.*,other_tab_col z tab t, other_tab“. Tím se vytvoří definice pohledu, která je nesprávná v DBA_VIEWS, takže vyvolá ORA- 00936 a možné výpisy jádra. Aby bylo možné opravit chyby a vyřešit ORA-00936, společnost MetaLink nabízí tato řešení pro příslušnou verzi:
Oprava pro 9.2.0.7:Patch 4192148 je k dispozici pro systémy Solaris (64bit) a AIX5L (64bitová verze). Oprava pro 10.1.0.4:
Oprava 4212516 je dostupná pro většinu platforem.
Stručně řečeno, ORA-00936 chybí výraz lze vyřešit pečlivou kontrolou příkazu SQL.
Související článkyORA-00911:neplatný znak
ORA-03113:konec souboru na komunikačním kanálu
ORA-00257
ORA-27154:vytvoření příspěvku/čekání se nezdařilo během spouštění
ORA-29913 s externími tabulkami
ora-20001 v Shromažďování statistik schématu na 11g (FND_HISTOGRAM_COLS)
Souběžný správce:cleanup_node se nezdařil kvůli ORA-01427