CASE文でORA-00932が発生する場合は、
分岐した結果の型が一致していない事が原因です。
サンプル
例えば、以下のSQL文はORA-00932エラーとなります。
1 2 3 4 5 6 7 8 |
SELECT CASE 10 WHEN 10 THEN 'ABC' WHEN 20 THEN 123 ELSE NULL END FROM dual; |
- 実行結果
- ORA-00932: データ型が一致しません CHARが予想されましたがNUMBERです。
これは、分岐した結果が 'ABC'(文字列)と123(数値)と型が異なるためです。
以下のように型を合わせればエラーとなりません。
1 2 3 4 5 6 7 8 |
SELECT CASE 10 WHEN 10 THEN 'ABC' WHEN 20 THEN '123' ELSE NULL END FROM dual; |
- 実行結果
- ABC
分岐した結果が 'ABC'(文字列)と'123'(文字列)と型が同じためエラーとなりません。
まとめ
- CASE文の結果の型は、全て同じになるように注意しましょう。
※NULLはOKです。