我想实现存储过程返回结果集,参考网上的资料,我的步骤如下:
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
--------
请问:是什么原因呢?
是不是调用错误啊?
怎么改正?
谢谢!
------解决方案--------------------
declare
p_cur pkg_cur.myrcType;
begin
mu_cur(p_cur);
p_cur.close;
end;
调用的时候怎么能不传入参数呢?
即使这个参数是out型的。
------解决方案--------------------
在包体里面要包含这个存储过程呀。
------解决方案--------------------
--创建包头
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;