无法将一个游标值直接付给另一个游标,除非创建一个临时的表tmp,
V_CURSOR_A --> tmp --> V_CURSOR_B
V_CURSOR_A --> tmp --> V_CURSOR_B
解决方案 »
- 问一下装完 oracle 数据库后,要怎么重新设置 classpath 来运行 j2se 程序 ?
- oracle 10安装了好几次,不知道怎么用!!!!!!
- 刚过完生日,放分
- 请大家帮忙,如何在登录时获取客户端IP地址,格式(192.168.0.1)
- 字符集問題!
- 还是一个sql查询问题(高手请进,beckhambobo请进),谢谢啦
- 【救命】视图中的sql代码(含子查询) copy 到 包过程中 编绎不通过?
- 请教:关于import的问题。
- oracle通过logminer分析日志遇到个问题
- 【菜鸟求助】Eclipse连接不上oracle12C
- 求Oracle9i数据库安装软件!
- 我用CB+BDE连接Oracle 用Query查询中为什么所有的子段必须用大写的呀 急
V_CURSOR_B T_CURSOR;
V_CURSOR_C T_CURSOR;
我定义个3个游标,其中V_CURSOR_A,V_CURSOR_B是通过Open for 打开的,我想把每次循环后的V_CURSOR_B赋给V_CURSOR_C,也就是说如果循环了10次数,V_CURSOR_C中纪录集就是10次V_CURSOR_B的纪录集这样不行吗?我只能每次将V_CURSOR_B中的数据放入到一个临时标中?最后用V_CURSOR_C打开那个临时表吗??
可是我最后要将V_CURSOR_C赋给一个输出参数,需要将该纪录集返回,怎麽办?
其实,许可的话,可以考虑用“数组、表型变量”代替 recordset
可问题是“数组、表型变量”能作为一个游标类型返回吗?我的那个V_CURSOR_C可是out的呀?
AS
TYPE myrctype IS REF CURSOR;
END pkg_test;
/create function name_f(p_id in varchar2)
return varchar2
as
str varchar2(50);
begin
str:='select * from table_name id='''||p_id||''' where rownum<16';
return(str);
end;
/declare
sqlstr varchar2(1000);
cursor t_sor is
select id from A;
num number:=0;
v_rc pkg_test.myrctype;
begin
for v_sor in t_sor loop
if num=0 then
sqlstr:=name_f(v_sor.id);
num:=num+1;
else
sqlstr:=sqlstr||' union'||name_f(v_sor.id);
end if;
end loop;
open v_rc for sqlstr;
end;
/
哈,我太佩服了,方法真巧妙,我没试验,估计肯定没问题,先结贴了,谢谢:)