如何在sql表中创建循环

时间:2013-05-01 07:33:24

标签: sql-server vb.net

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

enter image description here

2 个答案:

答案 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中使用游标会产生严重的性能影响!

Why do people hate SQL cursors so much?