今天刚拿到一套新代码,但是在调用存储过程的时候有点问题,不知道我的环境哪里不行,各位大哥帮忙看看。
1.存储过程有返回结果集,已经在plsql测试过,结果集有返回。
2.java用jdbc调用的时候,设置了传入的参数IN和输出的游标结果集:oStmt.setString(1, sUserID);
oStmt.setString(2, sPrjId);
oStmt.setString(3, sPalType);
oStmt.registerOutParameter(4, oracle.jdbc.OracleTypes.CURSOR);
oStmt.execute();//游标取回值是null。使用executeQuery()游标可以得到。很奇怪。
ResultSet oResultSet = (ResultSet) oStmt.getObject(4); //oResultSet取回null
问题:oStmt.execute()的时候oResultSet取回null。但是代码是现场的,不会有问题,我的环境是不是有问题?大家帮帮忙。谢谢

解决方案 »

  1.   

    oStmt.execute(); 这个方法是void 没返回值。
      

  2.   

    execute应该返回的是boolean
    if(oStmt.execute()){
       //操作   
        }
    或者是
    ResultSet  = oStmt.executeQuery();
      

  3.   

    可能我没说好。这个问题是在这句:
    ResultSet oResultSet = (ResultSet) oStmt.getObject(4); //oResultSet取回null
    我问execute()之后,取不到游标的结果集。但是如果我用executeQuery(),然后再去取游标,结果集就有了。
      

  4.   

    很多教程教用存储过程的时候也是用execute()来运行的,然后再取出输出的参数,但是我的不行。不知道为什么?
      

  5.   

    你应该没有分清什么是游离态 和 持久态 你看看相关资料吧!那里有解决方法 你给的值是游离态 读取的是持久态 那肯定就为null了 也许是这问题 你试试看!我也不确定
      

  6.   


    游离态、、持久态、、、我用的存储过程,而且只是select出结果集!
    不过我已经找到原因了。嘿嘿。结贴。