PL/SQL 更新当前的
Posted
技术标签:
【中文标题】PL/SQL 更新当前的【英文标题】:PL/SQL Update where current of 【发布时间】:2015-06-25 02:07:28 【问题描述】:如果出版商是“x”,我需要将一本书的价格提高 5%,对于其他人,我需要提高 10%。我需要使用 'where current of' 和 'returning into' 子句来做到这一点。
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
【讨论】:
【参考方案2】:你为什么要把一件简单的事情变得更复杂?做吧:
UPDATE books SET price = price + 0.05 * price WHERE publisher = 'x';
UPDATE books SET price = price + 0.1 * price WHERE publisher != 'x'
【讨论】:
以上是关于PL/SQL 更新当前的的主要内容,如果未能解决你的问题,请参考以下文章