SQL存储过程更新语句

时间:2012-11-26 06:32:20

标签: sql-server stored-procedures sql-server-2008-r2

编写此查询的其他方法是什么?

Update TempTableDisplay         
SET  _cPayment = case When exists(
                   select Tofield from #UFTFMappingTempTable where ToField='Payment') 
                   then IsNull(S.Payment,0) 
                else dbo.fnGetMaximum((ISNULL(M.NetTaxDue0,0) + ISNULL(M.NetTaxDue1,0) + ISNULL(M.NetTaxDue2,0) + ISNULL(M.NetTaxDue3,0) + ISNULL(M.NetTaxDue4,0) + ISNULL(M.NetTaxDue5,0) + ISNULL(M.NetTaxDue6,0)),0)
                end

1 个答案:

答案 0 :(得分:0)

这是另一种方式:

if exists(select Tofield from #UFTFMappingTempTable where ToField='Payment') 
begin
    Update TempTableDisplay         
    SET  _cPayment = IsNull(S.Payment,0) 
end
else
begin
    Update TempTableDisplay
    set _cPayment = dbo.fnGetMaximum((ISNULL(M.NetTaxDue0,0) + ISNULL(M.NetTaxDue1,0) + ISNULL(M.NetTaxDue2,0) + ISNULL(M.NetTaxDue3,0) + ISNULL(M.NetTaxDue4,0) + ISNULL(M.NetTaxDue5,0) + ISNULL(M.NetTaxDue6,0)),0)
end

但是你可能已经注意到了,你已经省略了很多查询 - 例如“S”或“M”表指的是哪些表?如果没有这些信息,这一切都无法发挥作用。