oracle存储过程做双层循环
我的需求是这样子的:先从A表中查询得到一个结果集a,遍历结果集a的每一行从中取得一个数值作为从b表中查询的条件得到另一个结果集b,然后结果集b里每一行的数值又作为条件去做...
我的需求是这样子的:
先从A表中查询得到一个结果集a,遍历结果集a的每一行从中取得一个数值作为从b表中查询的条件得到另一个结果集b,然后结果集b里每一行的数值又作为条件去做其它操作,结果写到中间表中。
我的思路:
结果集作为一个游标,然后去遍历游标的过程中又定义另一个游标,不过这样子好像行不通,那我应该怎么做呢? 展开
先从A表中查询得到一个结果集a,遍历结果集a的每一行从中取得一个数值作为从b表中查询的条件得到另一个结果集b,然后结果集b里每一行的数值又作为条件去做其它操作,结果写到中间表中。
我的思路:
结果集作为一个游标,然后去遍历游标的过程中又定义另一个游标,不过这样子好像行不通,那我应该怎么做呢? 展开
3个回答
展开全部
create or replace procedure test_procedure is
--a表游标定义
cursor a_cursor is
select id from a;
--b表游标定义
cursor b_cursor(aid number) is
select id from b where b.id = aid;
begin
for a_cur in a_cursor loop
for b_cur in 厅盯b_cursor(a_cur.id) 扮悄和loop
--这里是你要执行的操作,比如insert到c
insert into c values (b_cur.id);
commit;
end loop;
end loop;
语法是这样的,具体字段自己改一下,看你要做什么样的操作了但如果是这种插入到一张表逻辑过于简单,可以直接用等运橡值连接。
展开全部
结果集a用游标得到碰氏则,然后loop循环a,循环每一行,然后得笑棚到核如结果集b,再去做你所说的“其他操作”,然后写到中间表。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
create or replace procedure test_procedure is
--a表游标定义
cursor a_cursor is
select id from a;
--b表游孝腔标定义
cursor b_cursor(aid number) is
select id from b where b.id = aid;
begin
for a_cur in a_cursor loop
for b_cur in b_cursor(a_cur.id) loop
--这里滑纳是你要执行的操作巧让衫,比如insert到c
insert into c values (b_cur.id);
commit;
end loop;
end loop;
--a表游标定义
cursor a_cursor is
select id from a;
--b表游孝腔标定义
cursor b_cursor(aid number) is
select id from b where b.id = aid;
begin
for a_cur in a_cursor loop
for b_cur in b_cursor(a_cur.id) loop
--这里滑纳是你要执行的操作巧让衫,比如insert到c
insert into c values (b_cur.id);
commit;
end loop;
end loop;
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询