我想实现存储过程返回结果集,参考网上的资料,我的步骤如下:
1.创建程序包th.pkg_cur
CREATE OR REPLACE  PACKAGE "TH"."PKG_CUR"  AS
TYPE myrcType IS REF CURSOR;
END pkg_cur;
--------
2.创建存储过程th.my_cur
CREATE OR REPLACE  PROCEDURE "TH"."MY_CUR"   (p_cursor out 
    pkg_cur.myrcType)   is   
begin   
  open p_cursor for 
    select * from fenxh;   
end;
说明:表fenxh中只有两列,并且都是char类型。
--------
3.在TOAD工具中执行此过程
begin
my_cur;
end;
--------
4.错误如下
ORA-06550: 第 2 行, 第 1 列: 
PLS-00306: 调用 'MY_CUR' 时参数个数或类型错误
ORA-06550: 第 2 行, 第 1 列: 
PL/SQL: Statement ignored
--------
请问:是什么原因呢?
是不是调用错误啊?
怎么改正?
谢谢!

解决方案 »

  1.   

    declare
    p_cur pkg_cur.myrcType;
    begin
    mu_cur(p_cur);
    p_cur.close;
    end;
    调用的时候怎么能不传入参数呢?
    即使这个参数是out型的。
      

  2.   

    doer_ljy(可战) ,你好,谢谢解答.
    我按你的方法试了一下 ,还是报错啊.
    错误如下: 
    ORA-06550: 第 5 行, 第 7 列: 
    PLS-00487: 对变量 'P_CUR' 的引用无效
    ORA-06550: 第 5 行, 第 1 列: 
    PL/SQL: Statement ignored
      

  3.   

    --创建包头
    create or replace package pkg_cur as
      
      type myrctype is ref cursor;  procedure my_cur
      (
        p_cursor out myrctype
      );
      
    end pkg_cur;--创建包体
    create or replace package body pkg_cur as  procedure p_cur
      (
        p_cursor out myrctype
      )is   
      begin   
        open p_cursor for 
          select * from fenxh;   
      end p_cur;
      
    end pkg_cur;