請問,oracle的存儲過程如何能返回數據集結果。

解决方案 »

  1.   

    SQL>  set serveroutput on SQL>  create or replace procedure p_fetch_5_row 
      2  ( 
      3   v_owner varchar2 
      4  ,ret_cur out sys_refcursor 
      5  ) 
      6  is 
      7  begin 
      8    open ret_cur for 
      9     select object_name 
     10       from dba_objects 
     11      where owner = v_owner 
     12        and rownum  <= 5; 
     13  end p_fetch_5_row; 
     14  / 过程已创建。 SQL>  create or replace procedure p_exec 
      2  is 
      3   v_cur sys_refcursor; 
      4   v_object_name varchar2(2000); 
      5  begin 
      6   p_fetch_5_row('SYS', v_cur); 
      7   loop 
      8   fetch v_cur into v_object_name; 
      9   exit when v_cur%notfound; 
     10   dbms_output.put_line(v_object_name); 
     11   end loop; 
     12   
     13   close v_cur; 
     14  end p_exec; 
     15  / 过程已创建。 SQL>  exec p_exec 
    /1005bd30_LnkdConstant                                                           
    /10076b23_OraCustomDatumClosur                                                   
    /10297c91_SAXAttrList                                                            
    /103a2e73_DefaultEditorKitEndP                                                   
    /1048734f_DefaultFolder                                                          PL/SQL 过程已成功完成。 
      

  2.   

    用ref cursor 就可以了sys_refcursor是oracle定义的一个ref cursor