Давайте посмотрим на пример.
create table #tbl (id int,val varchar(20))
insert #tbl values(1,'abc'),(2,'def')
create procedure update_tmp
@id int, @val varchar(50)
as
exec sp_executesql N'update #tbl set val=@val where id=@id', -- (1) query to execute
N'@id int, @val varchar(20)', -- (2) query params declaration
@id=@id, @val=@val -- (3) param initialization
-- left parts are defined in sp_executesql context, right parts go from outer sp definition
select * from #tbl
(1) и (2) могут быть @variable
с