看看ojdbc14.jar的版本,把他和class12.jar加在startweblogic的classpath的最前面可能weblogc调用了自己包里的版本

解决方案 »

  1.   

    String sSql = "{call Test_proc(?)}";
    CallableStatement csmt= (CallableStatement)con.prepareCall(sSql);
    csmt.registerOutParameter(1,oracle.jdbc.OracleTypes.CURSOR);
    csmt.execute(); 
    楼主的存储过程应该是返回一个游标的,但你没有接收.String sSql = "{?=call Test_proc()}"; 
    CallableStatement csmt= (CallableStatement)con.prepareCall(sSql);
    csmt.registerOutParameter(1,oracle.jdbc.OracleTypes.CURSOR);
    csmt.execute(); 
    有问题的话 继续发上来
      

  2.   

    不能时这样写的,oracle存储过程时不能有具体的返回值的,oracle中只有函数才会有返回值。开始我也这样认为,我把存储过程改为函数后用
    String sSql = "{?=call Test_proc()}";  
    CallableStatement csmt= (CallableStatement)con.prepareCall(sSql); 
    csmt.registerOutParameter(1,oracle.jdbc.OracleTypes.CURSOR); 
    方法去调用也还是不行,报错同样的错误。
    要不你随便写一个oracle存储过程让他返回一个查询结果集的游标,然后再通过数据源去调用(不要直接用JDBC调用哦!直接调用时可以的)。如果你搞出来了,把代码发给我看下也行,如果你那边行我这边不行那就时我这边有问题了。
      

  3.   

    问题解决了,是我的oracle驱动用错了。