ORACLE 存储过程执行一个sql查询,如何得到返回数据集,分不够可以加
我在写一个存储过程,存储过程里是一个分页查询的sql语句,我现在想执行完sql语句返回一个数据集;       
 我知道在sqlserver里是不用写代码的,但oracle是要自己写,高手请指点,最好提供源码参考,谢谢!       
    提供源码参考的给满分 
 是不是要用到游标;    
------解决方案--------------------我的异常网推荐解决方案:oracle存储过程,http://www.aiyiweb.com/oracle-develop/177537.html
------解决方案--------------------create or replace procedure getemps( p_cursor in out types.cursorType ) as 
 begin 
 open p_cursor for select id, name from TABLE1; 
 end;   
------解决方案--------------------功能描述:用指定分隔符切割输入的字符串,返回一维数组,每个数组元素为一个子串。   
 源代码:     
 CREATE OR REPLACE TYPE ty_str_split IS TABLE OF VARCHAR2 (4000);   
 CREATE OR REPLACE FUNCTION fn_split (p_str IN VARCHAR2, p_delimiter IN VARCHAR2) 
   RETURN ty_str_split 
 IS 
   j INT := 0; 
   i INT := 1; 
   len INT := 0; 
   len1 INT := 0; 
   str VARCHAR2 (4000); 
   str_split ty_str_split := ty_str_split (); 
 BEGIN 
   len := LENGTH (p_str); 
   len1 := LENGTH (p_delimiter);   
   WHILE j  < len 
   LOOP 
     j := INSTR (p_str, p_delimiter, i);   
     IF j = 0 
     THEN 
         j := len; 
         str := SUBSTR (p_str, i); 
         str_split.EXTEND; 
         str_split (str_split.COUNT) := str;   
         IF i > = len 
         THEN 
           EXIT; 
         END IF; 
     ELSE 
         str := SUBSTR (p_str, i, j - i); 
         i := j + len1; 
         str_split.EXTEND; 
         str_split (str_split.COUNT) := str; 
     END IF; 
   END LOOP;   
   RETURN str_split; 
 END fn_split; 
 /   
 测试:   
 DECLARE 
   CURSOR c 
   IS 
     SELECT * 
       FROM TABLE (CAST (fn_split ( '1;;12;;123;;1234;;12345 ',  ';; ') AS ty_str_split 
                   ) 
               );   
   r c%ROWTYPE; 
 BEGIN 
   OPEN c;   
   LOOP 
     FETCH c INTO r;   
     EXIT WHEN c%NOTFOUND; 
     DBMS_OUTPUT.put_line (r.column_value); 
   END LOOP;   
   CLOSE c; 
 END; 
 /         
 结果: 
 1 
 12 
 123 
 1234 
 12345 
------解决方案--------------------楼主,这是一个参照:   
 //定义游标参数 
 OracleParameter outResult = new OracleParameter( "prm_OutResult ", OracleDbType.RefCursor, ParameterDirection.InputOutput);   
 //定义一个执行的SQL 
 command.CommandType = CommandType.Text; 
 command.CommandText =  "BEGIN TestProcedure(:prm_OutResult); END; ";   
 DataTable outTable = new DataTable();   
 //调用PL/SQL 
 command.ExecuteNonQuery();   
 //OUT参数取得 
 OracleRefCursor refCursor = (OracleRefCursor)outResult.Value;   
 //将参数读进一个DataTable 
 OracleDataAdapter adapter = new OracleDataAdapter(command); 
 adapter.Fill(outTable , refCursor);   
 得到的就是outTable 。   
 提醒一点,返回游标的事务和将游标数据读进DataTable的事务应该在一个事务里面。