topics

全部话题 - 话题: stockqty
(共0页)
P********R
发帖数: 1691
1
来自主题: Database版 - 请教PL/SQL 语法
请问下面的code有问题么? UPDATE段能不能改得更短些?
谢谢!
DECLARE
v_Partid INVENTORY.partid%TYPE := &1;
v_Qty ORDERITEMS.qty%TYPE := &2;

v_Counter NUMBER := 0;

EnteredQuantityIsZero EXCEPTION;
StockQuantityIsNotEnough EXCEPTION;

BEGIN

--Verify that the quantity is more than zero.
IF v_Qty = 0 THEN
RAISE EnteredQuantityLessThenOne;
END IF;

--update INVENTORY.
UPDATE INVENTORY
SET stockqty = (SELECT INVENTORY.stockqty - v_q... 阅读全帖
c*****d
发帖数: 6045
2
来自主题: Database版 - 请教PL/SQL 语法
UPDATE INVENTORY
SET stockqty = (SELECT INVENTORY.stockqty - v_qty
FROM INVENTORY
WHERE INVENTORY.partid = v_Partid)
WHERE partid = v_Partid;
不就等价于
UPDATE INVENTORY
SET stockqty = stockqty - v_qty
WHERE partid = v_Partid;
B*****g
发帖数: 34098
3
来自主题: Database版 - 请教PL/SQL 语法
我个人认为学习解决问题的方法远比学习一个知识点重要得多。
以你写的code为例,大家来探讨一下:
UPDATE INVENTORY
SET stockqty = (SELECT INVENTORY.stockqty - v_qty
FROM INVENTORY
WHERE INVENTORY.partid = v_Partid)
WHERE partid = v_Partid;
这个你自己看着都觉得别扭,怎么办?当然,去问会的同学也是一种方法,但肯定不是
最好的。
学习第一大法,***读文档***
找到oracle 11gR2的关于update的文档(怎么找到文档的?晕倒)。
http://docs.oracle.com/cd/E11882_01/server.112/e17118/statement
一共没几行,里面已经给出例子能解决你的问题。
如果你仔细阅读这篇文档,你会发现你的code还可以继续优化。基本上就解决了另外一
个问题,为什么update后还要再用一... 阅读全帖
(共0页)