我想定义个存储过程返回结果集,可是老是有问题,以下是存储过程的定义: CREATE OR REPLACE PACKAGE PKG_REFCURSOR ISTYPE MYCURSOR IS REF CURSOR;END PKG_REFCURSOR; 
 
 create or replace PROCEDURE PR_KHLB_TEST
 (
 khlb_out out PKG_REFCURSOR.MYCURSOR
 )
IS
begin
  open khlb_out for
    select khlb from t_xt_khlb where bh='1';
end PR_KHLB_TEST;

解决方案 »

  1.   

    CREATE OR REPLACE PACKAGE PKG_REFCURSOR IS
      TYPE MYCURSOR IS REF CURSOR;
      procedure TEST(khlb_out out MYCURSOR);
    END PKG_REFCURSOR; 
     
    CREATE OR REPLACE PACKAGE body PKG_REFCURSOR IS
      procedure TEST(khlb_out out MYCURSOR)
      is
      begin
        open khlb_out for
          select khlb from t_xt_khlb where bh='1';
      end;
    END PKG_REFCURSOR;
      

  2.   

    什么问题?按照我的方法能出问题的就是你的select khlb from t_xt_khlb where bh='1';这句sql
      

  3.   

    行号= 1 列号= 33 错误文本= PLS-00103: 出现符号 "CREATE"在需要下列之一时:  ( ; is with authid as    cluster compress order using compiled wrapped external    deterministic parallel_enable pipelined 
      

  4.   

    这个是错误提示,select khlb from t_xt_khlb where bh='1' 这句单独执行是没有问题的
      

  5.   

    下面的代码在9i数据库中测试通过。
    CREATE OR REPLACE PACKAGE PKG_REFCURSOR IS
      TYPE MYCURSOR IS REF CURSOR;
      procedure TEST(khlb_out out MYCURSOR);
    END ; CREATE OR REPLACE PACKAGE body PKG_REFCURSOR IS
      procedure TEST(khlb_out out MYCURSOR)
      is
      begin
        open khlb_out for
          select * from latn ;
      end;
    END ;