我可以将变量传递给select语句作为列名,其中where变量的条件值

时间:2014-09-08 01:04:15

标签: sql sql-server-2008

我有以下简单的select语句:

DECLARE @value varchar(10) 
SET @value = 'intStep' 

SELECT @value FROM dbo.tblBatchDetail

我试过了

 SELECT CAST(@value AS varchar(10)) FROM dbo.tblBatchDetail

然后我得到了一个intstep的列表

问题:我可以将变量作为列名传递给此语句吗?或者使用变量值

的条件,最好的方法是什么

我使用的是SQL Server 2008(9.0 RTM)

这将是一个存储过程

提前致谢

1 个答案:

答案 0 :(得分:0)

您可以使用动态SQL执行此操作,但这是 BAD 练习。

以下是您的问题的答案,但我肯定不会这样做,因为它会让您受到SQL注入攻击。

create procedure GetColumn
     @columnName varchar(50), 
     @g varchar(200)
as
   declare @str varchar(2000)
   set @str = 'select [' + @columnName + '] from dbo.tblBatchDetail where Gnumber = ' + @g

   exec ( @str ) 

GO