2012-11-14 48 views
2

是否可以在PL/SQL 10g中做这样的事情?oracle 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看到“在选择REC *从双反”,预计“循环”,以立即采取后续。我在循环中的代码是很多行,我不想保存它的两个副本。

回答

2
下面

尝试查询,这将检查是否从其他for_goats可变user_is_goat = 1并返回数据它将从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; 
+0

我喜欢它返回,但只有在两个表是兼容的工作 – Gerrat

+0

所以不能您将*替换为您需要的列的列表。你必须知道它们是什么,因为你在循环中使用它们,对吧? – eaolson