declare v_sql varchar2(1000); v_str varchar2(500); type curtype is REF cursor; A curtype; begin select value into v_sql from a; v_sql:='select '||v_sql||' from b'; open a for v_Sql; loop fetch a into v_str exit when a %notfound; --你的循环操作 end loop; close a; end;
表a 字段value 值为 id||':'||name
表b 字段id 值为 1,2,3
字段name 值为 a,b,c
结果是 select id||':'||name from b 查询到1:a 2:b 3:c(中间分号)
但是因为这个value值不确定有可能是name||':'||id 或者其他
所以要结合表a但是sql怎么写呢
select replace(
replace(UPPER(a.value),'ID',B.ID)
,'NAME',B.NAME) from a,b
不这样写的话只能是使用动态语句实现了,没有其他方法
v_sql varchar2(1000);
v_str varchar2(500);
type curtype is REF cursor;
A curtype;
begin
select value into v_sql from a;
v_sql:='select '||v_sql||' from b';
open a for v_Sql;
loop
fetch a into v_str
exit when a %notfound;
--你的循环操作
end loop;
close a;
end;