Существуют различные подходы:
create table #test(id int,name nvarchar(20));
insert into #test (id, name) values (1, 'ggg'),(2, 'hhh'),(3, 'ppp')
declare @t int=2;
declare @script nvarchar(200);
- приведение к varchar
set @script='select * from #test where id =' + CAST(@t AS VARCHAR(100));
- преобразование для того же эффекта
set @script ='select * from #test where id =' + CONVERT(VARCHAR(100),@t);
- использованиеCONCAT
(требуется SQL-Server 2012 +)
set @script =CONCAT('select * from #test where id =',@t);
exec(@script);
Но это то, что вы действительно должны делать:
set @script ='select * from #test where id = @id';
EXEC sp_executesql @script,N'@id INT',@id=@t;
Динамически объединяя операторы (и особенно параметры!), Вы открываете васдля впрыска sql .Если вы используете значения, поступающие из пользовательского ввода, вы можете встретить маленькие таблицы Бобби .