我有以下臨時表(#updates
):如何從臨時表編寫動態SQL以更新每個員工記錄?
userid newvalue
------------------
031233 A
467763 B
656532 C
我需要更新用戶表中的每個記錄:
update tbl.users set foo = 'A' where id = '031233';
update tbl.users set foo = 'B' where id = '467763';
update tbl.users set foo = 'C' where id = '656532';
AFAIK,我需要動態SQL讀取#updates
表並執行更新:
declare @cnt int;
declare @id int = 1;
select @cnt = count(1) from #updates; -- 3
while @id <= @cnt
begin
select @id;
select @sql = N'update tbl.users set foo = ' + ?? + 'where id = ' + ??;
exec sp_executesql @sql;
select @id = @id + 1;
end
;
很明顯,這是行不通的,但即使經過幾個小時的谷歌搜索和嘗試,這是最好的我 可以做。
任何人都可以幫助我,告訴我如何正確循環通過臨時表嗎?