2017-07-25 106 views
0

我在這裏有一個問題....請幫助我。如何組合兩個存儲過程?

我有一個表叫Master_BoxStock和我創造了這樣一個存儲過程:

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

我想拍攝效果,這樣更新一次之後:

UPDATE Master_BoxStock 
SET currentQty = Result 
WHERE warehouseName = 'Display' 

應該如何我這樣做?

+1

像存儲過程這樣的程序代碼是**高度特定於供應商的** - 所以請添加一個標籤以指定您是使用mysql,postgresql,sql-server,oracle還是db2 ' - 或者其他的東西。 –

+0

什麼是您設置爲currentQty的結果?爲什麼你不能有一個單一的程序? – Badiparmagi

+0

我想在扣除@insertQty後得到更新後的結果,即「currentQty」,我不知道如何在一個程序中完成...這就是爲什麼也許...你能告訴我嗎? –

回答

0

基於語法,我會說你正在使用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' 

注:
我使用CROSS JOIN假設你的第一次更新隻影響一行。如果情況並非如此,您將在表變量中獲得多行,並且還必須向表變量添加行標識符,以便您知道要選擇的行。

+0

工作了!謝謝!! –