--包头
create or replace package pkg_test
as
  type myCursor is ref cursor;
  
end pkg_test;
create procedure list_early_deaths(refcursor_name out pkg_test.myCursor) as
    toesup pkg_test.myCursor;
begin
    open toesup for
        SELECT poets.name, deaths.age
        FROM poets, deaths
        WHERE poets.id = deaths.mort_id
            AND deaths.age < 60;
    return toesup;
end;

解决方案 »

  1.   

    在包头里预定义一个ref cursor类型,然后在存储过程里使用自己定义的类型就可以了
      

  2.   

    不行啊,提示错误信息:
    Compilation errors for PROCEDURE ZKHX.LIST_EARLY_DEATHSError: PLS-00372: 在一个过程中,RETURN 语句无法包含表达式
    Line: 9
    Text: return toesup;Error: PL/SQL: Statement ignored
    Line: 9
    Text: return toesup;
      

  3.   

    定义包:
    CREATE OR REPLACE  PACKAGE "HOTEL_USER"."HOTEL_PACKET" as
      TYPE myrctype IS REF CURSOR; 
      
     end;定义过程:CREATE OR REPLACE  PROCEDURE "HOTEL_USER"."CT_GET_CPXM_LIST" (
      p_rc out Hotel_Packet.myrctype
    )
    as
      sqlstr varchar(500);begin
      
      sqlstr := 'select * from new_ct_cpxm';  OPEN p_rc FOR sqlstr;
    end;
      

  4.   

    function 包含return子句,function好像没有吧
      

  5.   

    up  dinya2003(OK) and  ggyy2002(我曾经是个高手)