如何在exec sp_executesql中使用numeric int

时间:2014-03-11 10:27:11

标签: sql-server-2008 tsql sql-server-2005 sql-server-2012

有什么办法可以在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(*)...'

有什么想法吗?谢谢你的帮助。

1 个答案:

答案 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