MERGE su una table variable
Posso applicare l'istruzione MERGE specificando come tabella di destinazione una variabile tabella?
Pare che la risposta sia "Nì". Perchè diventi "Sì" occorre che per la table variable sia definito un alias altrimenti il messaggio di errore sarà il seguente:
Msg 137, Level 16, State 1, Line 16
Must declare the scalar variable "@t".
Ecco un esempio "vincente":
create table #t (
primarycol int primary key,
col1 int
)
insert #t values (1, 1), (2, 2), (3, 3)
go
declare @t table (
primarycol int primary key,
col1 int,
col2 int
)
insert @t
values (1, 1, null), (2, 2, null)
merge
@t Target_Table_Alias
using
#t
on
Target_Table_Alias.primarycol = #t.primarycol
when matched then
update
set col2 = #t.col1
;
select * from @t
go
drop table #t
go