2014-02-11 17 views
0

我情況類似下面...PL/SQL:示例選擇和更新基於紀錄一定規則

select * from tableA A 

if A.salary > 100 and A.years > 0 then 
update tableA set A.level = '1' where A.id = id; 
else if A.salary > 200 A.years > 1 then 
update tableA set A.level = '2' where A.id = id; 
else 
update tableA set A.level = '0' where A.id = id; 
end if 

我如何在PL/SQL實現這一點?以上情況只是一個例子。

回答

4

您不需要在PL/SQL中執行此操作;它可以在一個UPDATE語句中使用來完成一個CASE expression

update tablea 
    set level = case when salary > 100 and years > 0 then 1 
        when salary > 200 and years > 1 then 2 
        else 0 
       end 

值得一提的是,「級別」是保留字(這是用於Oracle的分層查詢一個psuedocolumn),如果你使用它會導致問題。如果可能,我會選擇其他的東西。

+0

嗨本,是的,你是對的。但這僅僅是示例。我想在第一個過程中選擇全部,然後第二個過程會根據第一個過程做許多事情,比如插入,更新。 – Sh4m

+0

我會問另一個問題,然後準確地解釋你想要的東西@ Sh4m。 – Ben

+0

嗨本,我只是更新上面的一些過程,根據規則插入tableB和tableC。 想法是,一旦從第一步獲取所有記錄,第二步將獲得每個記錄和過程.. – Sh4m