我希望您的帮助可以创建一个存储过程来更新stock表。 首先,我将所有账单项目存储在临时表中,然后一旦保存,它将从库存表中扣除库存,然后将其存储在Bill_Item表中,Temp_Bill_Item表将被删除。
答案 0 :(得分: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;
(没有测试语法,因为你没有发布样本数据)
答案 1 :(得分:-1)
出于您的目的,我将研究使用光标。
http://msdn.microsoft.com/en-us/library/ms180169.aspx
请注意,如果您不小心,在SQL中使用游标会产生严重的性能影响!