実行しようとしている次の(例)クエリがあります
SELECT some_field
FROM MY_VIEW
WHERE date_field >= TO_DATE('2011-06-22', 'yyyy-mm-dd')
これを SQL*Plus で実行すると一連の結果が得られますが、(java.sql.Statement を使用して) JDBC を試行すると、次のエラーが発生します: java.sql.SQLException: ORA-01722: 無効な番号。
さらに奇妙なことに、次のコードは JDBC を介して機能します。
select field_1
FROM MY_VIEW v1
WHERE field_2 != 'some value'
AND not exists (
SELECT field_1
FROM MY_VIEW v2
WHERE v1.field_1 = v2.field_1
and t1.timestamp < t2.timestamp
)
しかし、以下のコード (SQL*Plus でも動作します) は動作しません (同じ ORA-01722 エラー):
select field_1
FROM MY_VIEW v1
WHERE field_2 != 'some value'
AND not exists (
SELECT field_1
FROM MY_VIEW v2
WHERE v1.field_1 = v2.field_1
and v2.field_2 = 'some value' -- Does not work with this line (same value as above)
and v1.timestamp < v2.timestamp
)
Java 6 を実行し、Oracle 10g に接続し、ojdbc14.jar を使用しています。照会されるビュー (MY_VIEW) は、複数のフィールドが varchar から数値にキャストされるなど、かなり複雑なものであることに注意することが重要だと思います。私の現在の疑念は、Oracle が jdbc クエリと SQL*Plus に対して異なる、実行不可能な実行計画を作成しているということです。
ここから何をすべきかについての提案はありますか?
ありがとう。