我必须编写一个生成更新的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字段,我必须在该字段上加入该表。
答案 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)
此外,您可以在字符串中间插入自己的数据, 希望对您有帮助