在pl/sql develop中 
我首先定义包   通过了编译
CREATE OR REPLACE PACKAGE TESTPACKAGE  AS
 TYPE Test_CURSOR IS REF CURSOR;
end TESTPACKAGE;再定义存储过程 也通过了编译
CREATE OR REPLACE PROCEDURE TEST1(busname in varchar2,p_CURSOR out TESTPACKAGE.Test_CURSOR) AS
BEGIN
    OPEN p_CURSOR FOR SELECT busname FROM  TOOL_BUS where busname=busname; 
END  TEST1;我的问题是:
1、现在我要取出p_cursor返回的数据集,该怎么调用呢?
2、在存储过程test1的定义中OPEN p_CURSOR FOR SELECT busname FROM  TOOL_BUS where busname=busname;对吗
          busname=busname    看起来乖乖的

解决方案 »

  1.   

    给你个例子,不过用的是SYS_REFCURSOR--定义包头
    create or replace package types
      as    procedure query(V_SQL in varchar2,RECORDS in out  SYS_REFCURSOR );
      end;
    --定义包体
    create or replace package body types is
     procedure query(v_sql IN varchar2,records  in out  SYS_REFCURSOR)
      as
        begin
          open records for V_sql;
        end;
    END  types;
    --获取返回游标的值
    declare     rs sys_refcursor;
        cid number; 
        cname NUMBER; 
    begin 
    types.query('select SNO,ENO from tbgo',rs); 
    loop 
      fetch rs into cid,cname;  
            exit when rs%notfound;  
    dbms_output.put_line(cid); 
    dbms_output.put_line(cname);
     
    end loop; 
    close rs; 
    end;
      

  2.   

    busname=busname;用别名啊,或者传进来的名字别定义的和字段名一样。
    是在块中调用还是其他程序?我只知道java调用的方式。
      

  3.   

    我要的就是在java中调用这个存储过程,   怎么调用呢?