0

我希望您能帮助创建一个存储过程来更新库存表。首先,我将所有账单项目存储在一个临时表中,然后一旦保存,它将从库存表中扣除库存,然后将其存储在 Bill_Item 表中,Temp_Bill_Item 表将被删除。

在此处输入图像描述

4

2 回答 2

2

临时表和游标都不是必需的:

update stock_table
   set qty = qty - bi.qty
from stock_table st
  join bill_items bi
    on bi.item_id = st.item_id
   and bi.itemcode = st.itemcode;

这假设每个项目在 bill_items 表中只出现一次。如果您可以有多个具有相同 itemid/itemcode 的行,则需要稍微不同的语句:

update stock_table
   set qty = qty - bi.total_qty
from stock_table st
  join (select item_id, itemcode, sum(qty) as total_qty 
        from bill_items 
        group by item_id, itemcode
  ) bi
    on bi.item_id = st.item_id
   and bi.itemcode = st.itemcode;

(语法未测试,因为您没有发布示例数据来玩)

于 2013-05-01T07:44:50.270 回答
-1

出于您的目的,我会考虑使用光标。

http://msdn.microsoft.com/en-us/library/ms180169.aspx

请注意,如果您不小心,在 SQL 中使用游标会严重影响性能!

为什么人们如此讨厌 SQL 游标?

于 2013-05-01T07:38:53.007 回答