2015-06-25 41 views
0

如果發佈者爲「x」,我需要將圖書的價格提高5%,其他人則提高10%。我需要用'where current'和'return into'從句來做。PL/SQL更新當前的

DECLARE 
CURSOR c1 IS SELECT book_id FROM books WHERE publisher = 'x'; 
CURSOR c2 IS SELECT book_id FROM books WHERE publisher != 'x'; 
BEGIN 
UPDATE books SET price = price + 0.05 * price WHERE CURRENT OF c1; 
UPDATE books SET price = price + 0.1 * price WHERE CURRENT OF c2; 
END; 

有沒有簡單的方法比做兩個遊標和兩個更新像'當別人'?

回答

1

簡單和直接..

UPDATE books SET price =decode(publisher,'x' 
           ,price + 0.05 * price -- If 'x' 
           ,price + 0.1 * price); -- else 
0

爲什麼你做一個簡單的事情更復雜?只要做到:

UPDATE books SET price = price + 0.05 * price WHERE publisher = 'x'; 
UPDATE books SET price = price + 0.1 * price WHERE publisher != 'x'