2014-01-13 52 views
1

我可以使用下面的語法在存儲過程中的SQL Server 2008,動態列名在存儲過程

set @count = (select count(*) from [dbo].[employee] where @column_name ='T') 
+0

不,你不能,你需要使用動態SQL。一個例子:http://stackoverflow.com/questions/16185425/change-columns-name-dynamically-in-sql –

回答

2
CREATE PROCEDURE Proc_Name 
@Column_Name NVARCHAR(128), 
@COUNT INT OUTPUT 
AS 
BEGIN 
SET NOCOUNT ON; 
    DECLARE @Sql NVARCHAR(MAX); 

SET @Sql = N'SELECT @count = count(*) from [dbo].[employee] where ' + QUOTENAME(@Column_Name) 
      + N' =''T''' 

EXECUTE sp_executesql @Sql 
         ,N'@COUNT INT OUTPUT' 
         ,@COUNT OUTPUT 

END