JDBC 9i得驱动不能连10g。。怀疑是10g得事务处理不一样了。。
在10g中
例如执行:RAISE no_data_found;。。程序可以报错
但执行
if XXX then
   insert into XX values(xx)
   commit;
end if
RAISE no_data_found;
在SQLPLUS中报错。但在程序中不报错。为什么??以上代码在9i中没问题

解决方案 »

  1.   

    if XXX then
    insert into XX values(xx)
    commit;
    end if
    RAISE no_data_found;你把你的代码改改呢?
    begin 
      if XXX then
        insert into XX values(xx)
        commit;
      end if
    exception 
      when no_data_found then null;
    end;你试一下,是否在oracle的9i和10g都能编译过去,我这里没有环境,,以前我写pl/sql的时候写例外都是这样写的。
      

  2.   

    oracle的高版本是绝对支持低版本的东西,但低版本要往高版本有可能会出问题。。
      

  3.   

    如果是web数据库的话,用连接池不就行了,为9i和10g各建立一个datasource,使用jndi。
      

  4.   

    tcmis(难道你忘了吗?) 我是要自己出发异常。降当前语句中止。但中止前向表当中插入一条提示数据。。10g客户端无法连接。。通过ODBC连接得。。但是ODBC在提交后面得异常就不执行了。。怎么处理?
      

  5.   

    谢谢大家。。问题已经解决。。ODBC在处理Oracle得no_data_found的时有问题。。不把它当作错误,被忽略,语句执行成功。。估计是在微软的数据库中没有设置这个异常,所以在ODBC里不把它当作错误。后来我设置了一个微软数据库有的异常(被0除)解决了。。