如何组合两个存储过程?

时间:2017-07-25 07:54:33

标签: sql

我这里有一个问题....请帮助我。

我有一个名为BufferedOutputStream的表,我创建了一个这样的存储过程:

Master_BoxStock

之后我想取结果,再次更新它:

BEGIN
    UPDATE Master_BoxStock
    SET currentQty = currentQty - @insertQty
    WHERE boxName = @newBoxName
END

我该怎么做?

1 个答案:

答案 0 :(得分:1)

根据语法我会说你使用的是SQL Server。 如果我是对的,你可以使用OUTPUT子句:

DECLARE @Output as table 
(
    currentQty int -- (I'm guessing the data type here....)
)

UPDATE Master_BoxStock
SET currentQty = currentQty - @insertQty
OUTPUT Inserted.currentQty INTO @Output 
WHERE boxName = @newBoxName

UPDATE m
SET currentQty = o.currentQty
FROM Master_BoxStock m
CROSS JOIN @Output o
WHERE warehouseName = 'Display' 

注意:
我使用了交叉连接,假设您的第一次更新仅影响一行。如果不是这种情况,您将在表变量中获得多行,并且必须将行变量添加到表变量中,以便您知道要选择哪一行。