有什么办法可以在sp_executesql中使用数字整数吗?
declare @total_test int
declare @test int
set @sql=N'select @test=count (*) from '+@db+'..'+@table
exec sp_executesql @sql
set @total_test +=@test
问题是他不会接受任何数字网格, 我甚至无法设置@sql = N'select count(*)...'
有什么想法吗?谢谢你的帮助。
答案 0 :(得分:2)
您需要在变量中使用OUTPUT
子句。另外在附注中,在将对象名称连接到动态sql字符串时必须使用QUOTENAME()
函数,以防止可能的sql注入攻击。
declare @total_test int;
declare @test int;
SET @total_test = 0;
set @sql=N'select @test=count (*) from '+ QUOTENAME(@db)+'..'+ QUOTENAME(@table)
EXECUTE sp_executesql @sql
,N'@test int OUTPUT'
,@test OUTPUT
set @total_test +=@test