0

実行しようとしている次の(例)クエリがあります

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 に対して異なる、実行不可能な実行計画を作成しているということです。

ここから何をすべきかについての提案はありますか?

ありがとう。

4

0 に答える 0