create or replace package pkg_test
as
type myCursor is ref cursor;
function get(p_id number) return myCursor;
end pkg_test;create or replace package body pkg_test
as
--输入ID 返回记录集的函数
function get(p_id number) return myCursor is
rc myCursor;
strsql varchar2(200);
begin
if p_id=0 then
open rc for select a.user_name from fnd_user a ;
else
strsql:='select a.user_name from fnd_user a where a.user_id=:p_id';
open rc for strsql using p_id;
end if;
return rc;
end get;
end pkg_test;
--上面是一个返回结果集的函数,下面调用.
create or replace procedure pro_test as
v_out pkg_test%myCursor;
v_name varchar2(100);
begin
v_out:=pkg_test.get(0); --得到结果集
loop
fetch v_out into v_name;
exit when v_out%notfound;
--这里进行处理,想要处理哪一行或进行什么处理在这里进行
end loop;
......
end;
as
type myCursor is ref cursor;
function get(p_id number) return myCursor;
end pkg_test;create or replace package body pkg_test
as
--输入ID 返回记录集的函数
function get(p_id number) return myCursor is
rc myCursor;
strsql varchar2(200);
begin
if p_id=0 then
open rc for select a.user_name from fnd_user a ;
else
strsql:='select a.user_name from fnd_user a where a.user_id=:p_id';
open rc for strsql using p_id;
end if;
return rc;
end get;
end pkg_test;
--上面是一个返回结果集的函数,下面调用.
create or replace procedure pro_test as
v_out pkg_test%myCursor;
v_name varchar2(100);
begin
v_out:=pkg_test.get(0); --得到结果集
loop
fetch v_out into v_name;
exit when v_out%notfound;
--这里进行处理,想要处理哪一行或进行什么处理在这里进行
end loop;
......
end;
解决方案 »
- 视图和中间表
- 关于oracle
- 想问一个sqlldr的问题。文件第一行是字段名。load的时候怎么去掉。
- 求助:oracle 查询问题
- 关于flashback_transaction一问
- 怎么才能让我的触发器实现批触发?
- 求助一个数据库备份问题~!希望有高手关注!急~~
- 如何取出两表中某个字段不一样的数据?
- *** 紧急求助:熟悉ERP/MRPII(尤其是 Oracle Application R11i)接口的哥们进来指点一二 ***
- oracle806如何获得一个表占用的磁盘空间
- 高分请问:在windows2003 server下安装oracle8i server总是不成功,报TNS出错!请问怎么解决?
- 无法登陆oracle服务器,帮忙啊!!!!
as
type mycursor is ref cursor;
procedure Pro_CurShipPlan
(
O_result out mycursor
)
is
begin
open O_result for select * from v_ydcurberthplan;
end;
end PKG_ydconnection;
--我的带有返回结果集的存储过程
create or replace procedure PRO_SHIPBERTH() is
v_out scheduler.pkg_ydconnection.mycursor;--这里该是.吧
v_name varchar2(1000);
begin v_out:=scheduler.pkg_ydconnection.Pro_CurShipPlan();
--显示错误为:调用Pro_CurShipPlan参数个数或类型错误
loop
fetch v_out into v_name;
exit when v_out%notfound;
--这里进行处理,想要处理哪一行或进行什么处理在这里进行
end loop;
...
谢谢 dinya2003(OK)
请继续指教
as
type mycursor is ref cursor;
procedure Pro_CurShipPlan
(
O_result out mycursor
)
is
begin
open O_result for select * from v_ydcurberthplan;
end;
end PKG_ydconnection;
--我的带有返回结果集的存储过程
create or replace procedure PRO_SHIPBERTH() is
v_out scheduler.pkg_ydconnection.mycursor;--这里该是.吧
v_name varchar2(1000);
begin scheduler.pkg_ydconnection.Pro_CurShipPlan(v_out);ok
loop
fetch v_out into v_name;
exit when v_out%notfound;
--这里进行处理,想要处理哪一行或进行什么处理在这里进行
end loop;
...
fetch v_out into v_name;
v_name类型问题v_name该是rowtype但v_name该怎么定义
v_name v_out%rowtype 是不行的
我是没有访问权限的只给了访问PKG_ydconnectionv_ydcurberthplan%rowtype就不行了谢谢 dinya2003(OK) wylwyl1130(落雪山林)
----------就是避免 “授权scheduler的表”
才想到用存储过程实现的