SQL过程中的动态更新

时间:2019-05-21 09:40:16

标签: sql-server dynamic-sql

我必须编写一个生成更新的sql过程。过程将具有一个参数,在该参数中,我将具有表的名称。例如,Customer1,Customer2,NewCustomer。所有表都将具有RecordId字段,我想在此字段上加入该表。

在这种情况下,更新将是这样



update t 
    set [Status] = 100
from 
   TemporaryTable t 
   left join Customer1 c1 on c1.RecordId = t.RecordId 
   left join Customer2 c2 on c2.RecordId = t.RecordId 
   left join NewCustomer c3 on c3.RecordId =t.RecordId

   where 
      c1.RecordId is null 
      and c2.RecordId is NULL
      and c3.RecordId is null 



问题在于参数中表的数目是可选的。它可能是3 4或1个表,我必须将它们与我的临时表连接起来以创建更新。我唯一了解的是每个表都将具有RecordId字段,我必须在该字段上加入该表。

1 个答案:

答案 0 :(得分:0)

您可以将查询设置为字符串并根据参数进行更改

set @sql='
    update t 
        set [Status] = 100
    from 
       TemporaryTable t ';

    if(@Customer1 is not null)
        begin
        set @sql=@sql+'left join Customer1 c1 on c1.RecordId = t.RecordId';
        end
...other code

最后执行字符串

print(@sql)
EXECUTE(@sql)

此外,您可以在字符串中间插入自己的数据, 希望对您有帮助