create or replace PACKAGE get_bom
as
TYPE bom is Ref cursor;
procedure example(bom_cr  OUT BOM);
end get_bom;
/
create or replace PACKAGE BODY get_bom
AS
procedure example(
bom_cr  OUT BOM
) as
begin
open bom_cr  for select * from test;
end example;
end get_bom;
/
set serveroutput on
declare
   TYPE bom is Ref cursor;
   lvC     bom;
   lv      bom;
   lvAA    number(5);
begin
   get_bom.example(lvC);
  
   LOOP
       FETCH lvC INTO lvAA;
       EXIT WHEN lvC%NOTFOUND;
       dbms_output.put_line(lvAA);
   end loop;     
end;/*
SQL> desc a
 AA                                                 NUMBER(2)    
*/

解决方案 »

  1.   


     sqlplus里这么写: 
      variable c refcursor
      exec [ProcName] (:c); 
      print c
      

  2.   

    to leecooper0918(PajeroFans)
    你的方法调用提示成功!在C++ builder 里好象没有varialble这个类型,我该怎么声名这个变量?
      

  3.   


      没用过C++ Builder, 但是各种开发语言,我想应该都能支持存储过程
      返回结果集吧.
      

  4.   

    declare
    v_rc get_bom.bom;
    v_field_Code data_center.field_Code%type;
    v_field_name data_center.field_name%type;
    begin
    open v_rc;
    loop
    fetch v_rc into v_field_Code,v_field_name;
    exit when v_rc%notfound;
    dbms_output.put_line(v_field_Code||v_field_name);
    end loop;
    close v_rc;
    end;
    /