「駑馬十駕」を信念に IT系情報を中心に調べた事をコツコツ綴っています。

Oracle Database を使用していると、SQL 実行時に次のようなエラーに遭遇することがあります。

ORA-00936: 式がありません

一見すると分かりにくいエラーですが、原因は SQL構文のごく基本的なミスであることがほとんどです。
本記事では、ORA-00936 が発生する主な原因と、具体的な SQL 修正例を分かりやすく解説します。


ORA-00936 とは何か?

ORA-00936: 式がありません は、
Oracle が 「ここには値(式)が来るはずなのに、何も書かれていない」 と判断した場合に発生するエラーです。

主に以下のようなケースで発生します。

  • カンマの位置が不正

  • WHERE / SET 句の記述漏れ

  • 比較演算子の右辺・左辺が欠けている

  • サブクエリの構文ミス


よくある原因①:SELECT句のカンマ位置ミス

❌ エラーになる例

最後のカンマの後に式が存在しないため、ORA-00936 が発生します。

✅ 修正例

👉 SELECT 句の最後に不要なカンマがないかを必ず確認しましょう。


よくある原因②:WHERE句の条件不足

❌ エラーになる例

比較演算子の右側に値が存在しないため、Oracle が「式がない」と判断します。

✅ 修正例


よくある原因③:IN 句の中身が空

❌ エラーになる例

IN 句には 必ず1つ以上の値が必要です。

✅ 修正例


よくある原因④:UPDATE文の SET 句ミス

❌ エラーになる例

SET 句に 代入式が存在しないため、ORA-00936 が発生します。

✅ 修正例


よくある原因⑤:動的SQLでの文字列生成ミス

Java や PL/SQL などで SQL を動的生成している場合、
条件が空文字になった結果、構文エラーになることも多くあります。

👉 動的SQLの場合は、生成された最終SQLをログ出力して確認することが重要です。


ORA-00936 が出たときのチェックポイント

エラー発生時は、次の点を重点的に確認してください。

  • SELECT / SET / IN 句の 末尾カンマ

  • WHERE 句の 比較演算子の左右

  • IN () が 空になっていないか

  • 動的SQLで 条件文字列が欠落していないか

0 0
Article Rating
申し込む
注目する
guest
0 コメント一覧
最も古い
最新 高評価
インラインフィードバック
すべてのコメントを見る

Ads by Google

0 0
Article Rating
申し込む
注目する
guest
0 コメント一覧
最も古い
最新 高評価
インラインフィードバック
すべてのコメントを見る
0
あなたの考えが大好きです、コメントしてください。x