从UPDATE查询获取更新的值

时间:2011-06-16 14:34:09

标签: sql-server-2008

我有一个更新查询:

UPDATE   FKMS_GNST_Transaction_Details
   SET Received_Quantity=Received_Quantity+(
                       CASE
                       WHEN (@int_Updated_Qty)>=(GTD.Quantity-GTD.Received_Quantity)
        THEN GTD.Quantity-GTD.Received_Quantity
                       ELSE (@int_Updated_Qty)
                       END)
      ,@int_GNST_Reference_Id=GTD.Transaction_Detail_Id   
  FROM FKMS_GNST_Transaction_Details GTD
 INNER JOIN #tbl_transactions tmp
    ON tmp.Transaction_id=GTD.Transaction_id
   AND GTD.Item_id=tmp.Item_id

我想获取添加到Received_Quantity字段的数量。也就是说,如果(@int_Updated_Qty)>=(GTD.Quantity-GTD.Received_Quantity) then GTD.Quantity-GTD.Received_Quantity其他明智的@int_Updated_Qty

我们如何获取此值(变量或任何其他方式)?请帮忙。

1 个答案:

答案 0 :(得分:1)

使用OUTPUT clause

UPDATE   FKMS_GNST_Transaction_Details
   SET Received_Quantity=Received_Quantity+(
                       CASE
                       WHEN (@int_Updated_Qty)>=(GTD.Quantity-GTD.Received_Quantity)
        THEN GTD.Quantity-GTD.Received_Quantity
                       ELSE (@int_Updated_Qty)
                       END)
      ,@int_GNST_Reference_Id=GTD.Transaction_Detail_Id   

--start gbn code
OUTPUT INSERTED.Received_Quantity
--end gbn code

  FROM FKMS_GNST_Transaction_Details GTD
 INNER JOIN #tbl_transactions tmp
    ON tmp.Transaction_id=GTD.Transaction_id
   AND GTD.Item_id=tmp.Item_id

OUTPUT结果可以

  • 进入表格(真实,临时或变量)
  • 以客户端作为记录集

您无法直接分配给本地变量