表Master_City 结构和数据如下 
--SELECT  * from master_city;
ID       CityNO   CityName       
1 477 鄂尔多斯
2 579 金华
3 816 绵阳
4 100 北京
5 431 长春
6 731 长沙
7 519 常州返回结果集,参考CSDN上的过程如下(创建成功):
create or replace procedure C_Test
(
ResultCur Out Sys_Refcursor
)
isbegin
  open ResultCur for
  SELECT * from master_city;
end C_Test;
问题1 在那执行可以返回结果集? (SQL*Plus敲什么命令?、PL/SQL里new的哪个子项里面敲什么命令?)问题2 如果我用包应该怎么做!??同样创建完后执行的话(SQL*Plus敲什么命令?、PL/SQL里new的哪个子项里面敲什么命令?)

解决方案 »

  1.   

    在参数里已经Sys_Refcursor为out类型,就是当这个过程执行完了之后,Sys_Refcursor是什么就返回什么.不用执行返回语句.使用这个procedure可以用这个语句:select C_Test from dual;
      

  2.   

    ResultCur被定义为out型的Sys_Refcursor是说,ResultCur变量是一个返回类型的变量,变量类型是光标指针。其他的存储过程或者是外部应用程序,通过调用这个方法来获得一个光标的引用。
    比如,在存储过程中调用 C_Test 
    CREATE OR REPLACE PROCEDURE DOER()
    IS
    vCur REF CURSOR;
    BEGIN
      C_Test(vCur);  //这里传入光标变量vCur
      Close vCur; //这里使用这个光标
    END;