sqlserver中的动态查询

时间:2014-01-07 10:22:43

标签: sql-server sql-server-2008 dynamic-sql

我试图使用动态查询获取表的总行数,但最终我没有这样做。这是我的疑问:

declare @sql NVARCHAR(MAX);
declare @result VARCHar(20);
declare @s varchar(10);
set @s='country';
SET @sql = 'SELECT '+@result +'=COUNT(*) FROM '+@s
EXEC (@sql);
select @result;

我在@result中获得NULL值。

2 个答案:

答案 0 :(得分:0)

你需要做这样的事情......

DECLARE @sql NVARCHAR(MAX);
DECLARE @COUNT INT;
DECLARE @TableName NVARCHAR(128);

SET @TableName = 'TableName';

SET @sql = N'SELECT @COUNT  = COUNT(*) FROM '+ QUOTENAME(@TableName)

EXECUTE sp_executesql @sql
                     , N'@COUNT INT OUTPUT'
                     , @COUNT OUTPUT
SELECT @COUNT

答案 1 :(得分:0)

declare @sql NVARCHAR(MAX)
declare @result VARCHAR(20)
declare @s varchar(10)
set @s='country'
SET @sql =  'SELECT @result = COUNT(*) FROM '+ QUOTENAME(@s)
EXEC sp_executesql @sql,N'@result varchar(20) OUTPUT',@result output
SELECT @result