麻烦问一下各位大哥大姐就是现在我在数据库里面些了一个存储过程 
create or replace procedure pro_test(id_ in  varchar2,
                                     name_ out varchar2,
                                     age_ out varchar2,
                                     return_ out varchar2)is
begin
  declare
    rows_  number(9);
    begin
      select count(1) into rows_ from test  where id= id_;
      if  row_ = 0 then
      return_ := 'NO';
      else
      select name=name_ , age=age_ from test where id=id_;
      end if;
    end;
exception
    when others then
    rollback;
end pro_test;但是这个返回的结果是id   name   age
01   张三    20
01   李四    21
就是是说  一个id 有2条数据  我想问一下  这个我在java程序里面应该怎么去取 返回的这2条数据  当然也有可能一个id返回3条数据  4条数据   我就是想问一下  怎么去取这个结果集?
如果只有一条记录 这个我知道 
Connection con=null;
CallableStatement cs=null;
cs = con.prepareCall("{call pro_test(?,?,?,?)}");
cs.registerOutParameter(4java.sql.Types.CHAR);
cs.registerOutParameter(3,java.sql.Types.CHAR);
cs.registerOutParameter(2java.sql.Types.CHAR);
cs.setString(1,id);
cs.execute();
String ret=cs.getString(2);
String ret=cs.getString(3);
好像是通过这样取值 一条记录的话  但是2条记录这个怎么取啊
麻烦说一下  谢谢

解决方案 »

  1.   

     ResultSet  rs = cs.executeQuery();
     //然后遍历rs
     List<实例对象> list=new ArrayList<实例对象>();  
    实例对象 obj=null;
    while(rs.next()){
       obj=new 实例对象();
       obj.setId(rs.String(""));
       。。
       list.add(obj);
     }
     将查询的数据就添加到list中了。操作list就行了,。
      

  2.   


    你这个获取参数的时候 只是获取一条,你可以加一个循环进行遍历获取。
    比如
    while(rs.next){
     获取的方法
    }
      

  3.   


    就返回一个result,就去第一个result就是那个结果集了
      

  4.   

    返回结果集 用ResultSet 
      

  5.   

    Connection con=null;
    CallableStatement cs=null;
    cs = con.prepareCall("{call pro_test(?,?,?,?)}");
    cs.registerOutParameter(4java.sql.Types.CHAR);
    cs.registerOutParameter(3,java.sql.Types.CHAR);
    cs.registerOutParameter(2java.sql.Types.CHAR);
    cs.setString(1,id);
    cs.execute();
    String ret=cs.getString(2);
    String ret=cs.getString(3);