説明
ORA-00936:式がありません これは、OracleSQLで作業するすべての人がしばらくの間直面したはずの一般的なエラーの1つです。これは通常、SQLステートメントで重要なことを省略した場合、つまり実行しようとしていたものの重要なチャンクを省略した場合に発生します
参照 :Oracleドキュメント
ORA-00936の原因:式がありません
このOracleエラーは、主にSQLSELECTステートメントに関連しています。明らかな理由の1つは、選択した列のリストが欠落しているか、選択した列の式が不完全であるということです。
ORA-00936欠落式エラーを解決するために実行するチェックリスト
(1)selectステートメントに列をリストするのを忘れた場合に発生します
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
2つの異なる句があることは意味がなく、エラーが発生します
もう一つの例
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
個別は最初にのみ使用できます
したがって、正しいステートメントは
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)このエラーは、SQLステートメントで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
ここでは、from句について言及していません。SELECTステートメントには3つの部分があります。「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)Bug:4567818 base Bug#:4192148 – unpublished on 9207
(b)Bug:4212516(unpublished)onoracle10.1.0.4.0。
これらのバグにより、SELECTONビューが失敗するとORA-00936エラーがスローされます。基本的に、SQLビューが「ビューMY_VIEWをselect t。*、other_tab_col from tab t、other_tabとして作成または置換」から作成されると、ORA-00936がスローされます。これにより、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:起動中にpost/wait作成に失敗しました
11g(FND_HISTOGRAM_COLS)でスキーマ統計を収集する外部テーブル
ora-20001を使用するORA-29913
同時マネージャー:cleanup_nodeがORA-01427のために失敗しました