PL/SQL 更新当前的位置
PL/SQL Update where current of
如果出版商是 '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;
有没有比用 'when others' 做两个游标和两次更新更简单的方法?
为什么要把简单的事情搞复杂?只是做:
UPDATE books SET price = price + 0.05 * price WHERE publisher = 'x';
UPDATE books SET price = price + 0.1 * price WHERE publisher != 'x'
简单直接..
UPDATE books SET price =decode(publisher,'x'
,price + 0.05 * price -- If 'x'
,price + 0.1 * price); -- else
如果出版商是 '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;
有没有比用 'when others' 做两个游标和两次更新更简单的方法?
为什么要把简单的事情搞复杂?只是做:
UPDATE books SET price = price + 0.05 * price WHERE publisher = 'x';
UPDATE books SET price = price + 0.1 * price WHERE publisher != 'x'
简单直接..
UPDATE books SET price =decode(publisher,'x'
,price + 0.05 * price -- If 'x'
,price + 0.1 * price); -- else