iidaの日記: ORA-00907: missing right parenthesis
日記 by
iida
JDBCで
SELECT count(*) FROM CASE_TBL A LEFT OUTER JOIN CERTIFICATE_TBL B ON B.CRT_KEIYAKU_CD=CST_KEIYAKU_CD WHERE(B.CRT_CA_FROM_DT>?OR B.CRT_CA_FROM_DT IS NULL)
というSQLを処理しようとしたら
ORA-00907: 右カッコがありません。
という例外が上がった。
しかし、どう見ても、括弧の釣り合いはとれている。
sqlplusで「?」の箇所を即値「date'2007-07-07'」に替えて実行すると、問題なく処理された(やはり)。
そこでSQLの最後のほうを少し変えて
SELECT count(*) FROM CASE_TBL A LEFT OUTER JOIN CERTIFICATE_TBL B ON B.CRT_KEIYAKU_CD=CST_KEIYAKU_CD WHERE(B.CRT_CA_FROM_DT>?OR(B.CRT_CA_FROM_DT IS NULL))
とすると、正常に処理された。
どうやらカッコでくくるべき箇所が、そうなってないと言いたげのよう。
英語のエラー・メッセージは、
ORA-00907: missing right parenthesis
なのだが、あるいは、rightが《leftの逆》ではなく、《wrongの逆》なのかもしれない。