oracle 怎么返回多个游标结果集
CURSOR cur_ti IS
   ...
   ...
   ... 
BEGIN
      FOR v_row IN cur_ti LOOP
       Search(p_1,p_2,p_3,p_4,p_5);
      END LOOP;
END;
我现在需要得到FOR 循环后Search函数返回的多个结果集,怎么办?
注:Search(p_1,p_2,p_3,p_4,p_5)返回的是一个游标
FUNCTION Search(p_1 IN VARCHAR2, p_2 IN VARCHAR2,
                       p_3 IN VARCHAR2, p_4 IN VARCHAR2, p_5 IN VARCHAR2)
RETURN SYS_REFCURSOR IS
              
              
------解决方案--------------------由于Oracle存储过程没有返回值,它的所有返回值都是通过out参数来替代的,列表同样也不例外,但由于是集合,
	所以不能用一般的参数,必须要用pagkage了.所以要分两部分:
	<1>建一个程序包。如下:
	create or replace package pkg_emp_findAll 
	is
		type mycursor is ref cursor;
	end pkg_emp_findAll;
	/
	程序包已创建。
	
	利用REF CURSOR,可以在程序间传递结果集(一个程序里打开游标变量,在另外的程序里处理数据)。
	<2>创建一个存储过程
	create or replace procedure proc_emp_findAll
		(emp_cursor out pkg_emp_findAll.mycursor)
	is
	begin
		open emp_cursor for 
		select * from emp;
	end proc_emp_findAll;
	/
	过程已创建。
	
	<3>JDBC调用返回列表的存储过程
	package test;
	import java.sql.*;
	public class Test4 {
		public static void main(String[] args) {
			Connection con = null;
			CallableStatement cs = null;
			ResultSet rs = null;
			try {
				Class.forName("oracle.jdbc.driver.OracleDriver");
				String url="jdbc:oracle:thin:@localhost:1521:ascent";
				String user ="user2";
				String password="ascent";
				con = DriverManager.getConnection(url,user,password);
				System.out.println(con);
				
				cs = con.prepareCall("{ call proc_emp_findAll(?) }");
				cs.registerOutParameter(1,oracle.jdbc.OracleTypes.CURSOR);
				cs.execute();
				rs = (ResultSet) cs.getObject(1);
				while (rs.next()) {
					System.out.println(rs.getInt(1) + "\t"
										+ rs.getString(2)+ "\t"
										+rs.getDouble(3)+"\t"
										+rs.getInt(4));
				}
				rs.close();
				cs.close();
				con.close();
			} catch (
ClassNotFoundException e) {
				e.printStackTrace();
			} catch (
SQLException e) {
				e.printStackTrace();
			}
		}
	}