现在我想写一个存储过程,是查询某一张表比如
create or replace procedure licheng(test1 in varchar2, test2 out varchar2) is
begin
  select c1 into test2 from T129 t where t.c1=test1;
end licheng;我想用java调用的时候返回一个ResultSet得怎么接受它啊!,还有我想问一下大家,如果是游标的话该怎么做呢?谢谢大家

解决方案 »

  1.   

    ResultSet rs=null;
    rs=str.executeQuery(sql);
    这不就返回一个rs吗?
      

  2.   

    --先在存储过程中定义一个游标作为返回参数
    create or replace procedure licheng(test1 in varchar2, test2 out varchar2, refcur OUT SYS_REFCURSOR) is 
    begin 
    open refcur for
      select c1 into test2 from T129 t where t.c1=test1; 
    end licheng; --然后在你的java代码中这样写StringBuffer sb = new StringBuffer();
                sb.append("{call ")
                  .append("licheng(?,?,?)}");
                
                csmt = conn.prepareCall(sb.toString());
                csmt.setString(1,test1);
                csmt.registerOutParameter(2,Types.VARCHAR);
                csmt.registerOutParameter(3,OracleTypes.CURSOR);
                csmt.execute();          
                rs = ((ResultSet) csmt.getObject(9));
    自己好好调试下...good luck!
      

  3.   

    String sql=" exec 存储过程名字 ?,?,? " ;   // ?为参数
    CallableStatement st=conn.prepareCall(sql);
    // set  方法设置预处理的参数
    ResultSet rs=st.executeQuery(); 
    rs就接收到了