JDBC与SQL*Plus/Toad中相同select查询的不同结果
我尝试运行以下示例查询JDBC与SQL*Plus/Toad中相同select查询的不同结果,jdbc,oracle10g,sqlplus,java-6,Jdbc,Oracle10g,Sqlplus,Java 6,我尝试运行以下示例查询 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_
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
)
我正在运行Java6,连接到Oracle10g,并使用ojdbc14.jar。我认为需要注意的是,在MY_视图中查询的视图是一件相当复杂的事情,包括将多个字段从varchar转换为numeric。我目前的怀疑是,Oracle正在为jdbc查询创建一个与SQL*Plus不同的、不可行的执行计划
有什么建议我应该从这里做吗
谢谢。字段_2的数据类型是什么?您确定“其他值”确实是字符串吗?你不会做像和v2.field_2=0这样的事情,是吗?肯定。事实上,我应该更正,我对=和!=使用相同的值领域