Outra forma mais profissional de se fazer o que foi descrito no post ("Update em Tabela e em variavel ao mesmo tempo.") é utilizando a cláusula OUTPUT do Insert, Update ou Delete.
Ela contém os valores Deleted e Inserted de todas as colunas do update, independente da quantidade de linhas que o Insert, Update ou Delete afetaram:
create table #permanent(id int, d float, comment varchar(15))
go
insert into #permanent values(1, 10., 'Original Row')
insert into #permanent values(2, 10., 'Original Row')
insert into #permanent values(3, 10., 'Original Row')
go
create table #staging(id int, d float)
go
insert into #staging values(2, 15.)
insert into #staging values(3, 15.)
insert into #staging values(4, 15.)
go
declare @updated_ids table(id int, d float, commentAnt varchar(15), commentNew varChar(15))
update #permanent
set d = s.d, comment = 'Modified Row'
output inserted.id, inserted.d, deleted.comment, inserted.comment into @updated_ids
from #permanent p, #staging s
where p.id=s.id
Select *
From @updated_ids
Drop Table #staging
Drop Table #permanent
quarta-feira, 26 de agosto de 2009
Assinar:
Postar comentários (Atom)
Nenhum comentário:
Postar um comentário