oracle 10g pl / sql条件用于循环选择

时间:2012-11-14 22:25:06

标签: plsql oracle10g

是否可以在10g的PL / SQL中执行类似的操作?

if user_is_goat = 1 then
  for item_rec in (select * from pricing_for_goats)
else 
  for item_rec in (select * from pricing_for_non_goats)
end if;
loop
.
.
end loop;

似乎当oracle看到“for select in from double”时,它希望“循环”立即跟随。循环中的代码很多行,我不想保留它的2个副本。

1 个答案:

答案 0 :(得分:2)

尝试下面的查询,这将检查变量user_is_goat = 1是否从for_goats返回数据,否则它将从for_non_goats返回

for item_rec in 
(
  select * from pricing_for_goats where user_is_goat = 1
  union
  select * from pricing_for_non_goats where user_is_goat <> 1
)
loop
.....
.....
end loop;