Отличающиеся результаты для одного и того же запроса выбора в JDBC против SQL * Plus / Toad - PullRequest
0 голосов
/ 24 июня 2011

У меня есть следующий (пример) запрос, который я пытаюсь выполнить

SELECT some_field
FROM MY_VIEW
WHERE date_field >= TO_DATE('2011-06-22', 'yyyy-mm-dd')

Когда я запускаю это в SQL * Plus, я получаю набор результатов при попытке через JDBC (используяjava.sql.Statement) Я получаю следующую ошибку: 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.

Любые предложения относительно того, что мне следует делать здесь?

Спасибо.

...