PL / SQL更新,其中

时间:2015-06-25 02:07:28

标签: plsql cursor sql-update where

如果出版商是' x'我需要将图书的价格提高5%。其他人则为10%。我需要使用'当前的'并且'回到'子句。

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;

是否有简单的方法,而不是做两个游标和两个更新,例如'当其他人'?

2 个答案:

答案 0 :(得分:1)

简单直..

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

答案 1 :(得分:0)

为什么一件简单的事情变得更复杂?只是做:

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