在一个存储过程中定义的游标,可以作为另一个存储过程的输入参数调用它吗?怎么定义呢?
如:
create or OR REPLACE PROCEDURE test1
is
cursor c_cursor is
select ... from ...;
begin
test2(c_cursor); --带入定义的游标
end test1;create or OR REPLACE PROCEDURE test2(
c_cur --定义游标
is
begin
--使用定义的游标c_cur
end test2;我这样的定义是不行的,那位有解决办法?因为我有两个存储过程是不同的游标(有相同的列),需要做同样的处理.
如:
create or OR REPLACE PROCEDURE test1
is
cursor c_cursor is
select ... from ...;
begin
test2(c_cursor); --带入定义的游标
end test1;create or OR REPLACE PROCEDURE test2(
c_cur --定义游标
is
begin
--使用定义的游标c_cur
end test2;我这样的定义是不行的,那位有解决办法?因为我有两个存储过程是不同的游标(有相同的列),需要做同样的处理.
解决方案 »
- 关于oracle 日志问题
- oracle group_concat运用,有兴趣请进
- 各位大虾,帮忙看看这个语句该怎么写
- 高难度问题,我要把oracle 8.0.4 升级到 oracle 9.2 大家给点意见(关系饭碗!急!)
- ORA-01858错误
- 没有找到oci.dll,这个错误怎么解决?
- SQL查询,语句很简单,结果出人意料,近来看看 200503
- oracle同一个Instance下两个数据库的通信
- 初级问题:如何在solaris系统中启动和停止oracle数据库?
- 急问:ORA-01691:Lob段project.sys_lob000255******006$$无法通过128(在表空间project中)扩展?
- 总是提示无效字符
- 大家帮忙看看这个存储过程有什么问题,编译不通过
c_cur in sys_refcursor
)
请问:在test2中怎么取得c_cur游标中的内容呢?
create or replace procedure P_Rain_Test(result out sys_refcursor)
is
begin
open result for select * from tmp_test2;
end;
-------call
declare
v sys_refcursor;vvid tmp_test2.vid%type;
vage tmp_test2.age%type;
i int:=0;
vworkername tmp_test2.workername%type;
begin
P_RAIN_TEST(v);
--open v;
loop fetch v into vvid,vage,vworkername;
exit when v%notfound;
dbms_output.put_line(vworkername|| ' ' || vage);
i:=i+1;
end loop;
close v; dbms_output.put_line(i);dbms_output.put_line('i');
end;
c_cur是参数直接用
就是在你的例子里,call里得到游标,传给P_Rain_Test中使用,即游标result是P_Rain_Test的输入参数