在PL / SQL中循环

时间:2013-06-12 06:12:01

标签: sql oracle

基本上我想根据另一个表的id来从表中选择数据。算法如下:

foreach i in (select distinct id from table1)
{
  select * from table2 where table2.id=i;
}

如何使用SQL查询执行此功能?我知道我们可以使用连接等而不是循环,但是,我的要求是我需要在for循环中逐个传递id。

2 个答案:

答案 0 :(得分:1)

select * from table2 where table2.id IN (select distinct id from table1)

答案 1 :(得分:1)

使用for代替foreach

将PL / SQL放入begin .... end;块(但请参阅下面的declare

=i应该是=i.id,因为i是select语句中的完整记录,但您只对其id字段感兴趣。

在PL / SQL中,必须为select语句提取into个变量。因此,您必须声明一个相应的变量:r table1%rowtype

此类变量的声明位于PL / SQL块的declare ...部分。

然后“算法”变为

declare
  r table2%rowtype;
begin
  for i in (select distinct id from table1) loop
     select * into r from table2 where table2.id = i.id;
  end loop;
end;