2014-01-07 40 views
2

Iam嘗試使用動態查詢獲取表的總行數,但最終iam未能這樣做。這裏是我的查詢:sqlserver中的動態查詢

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

iam在@result中獲得NULL值。

+0

你不設置結果變量所以它是空的,也是我不知道是什麼導致你期望這些SQL行 –

+0

的所以告訴我如何設置 – Subodh

+0

set @ result ='some thing' –

回答

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 
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 
+0

建設性的批評:你必須總是使用QUOTENAME()函數與你的SQL服務器對象名稱,可以節省您對可能的SQL注入攻擊。 –

+0

好點,我已經更新了。謝謝。 – Jayvee