是否可以将存储过程的变量设置为列类型?

时间:2014-04-17 15:39:37

标签: sql stored-procedures sql-server-2012

这似乎是一个简单的事件,您只需声明一个变量,并将其作为列传递给存储过程。我需要将列名传递给将在我的查询中使用的存储过程。是否可以声明它以便我可以将它用作列名或者是否有某些方法可以将字符串转换为列类型?

where Line1AStatus = 1

我需要能够将该号码在线路状态中传递给我的存储过程。到目前为止,我已尝试过这些方法。谢谢你的帮助。

where Line + @LineNum + AStatus = 1
where 'Line' + @LinNum + 'AStatus' = 1

1 个答案:

答案 0 :(得分:1)

不是使用标准SQL,而是使用动态sql

DECLARE @SQL nvarchar(max)
SELECT @SQL = 'SELECT * FROM table where ''Line' + CAST(@LinNum AS NVARCHAR) + 'AStatus'' = 1'
exec sp_executeSQL @sql

while循环的示例

DECLARE @SQL nvarchar(max), @LinNum int

SELECT @LinNum = 1
WHILE(@LinNum <= 5)
BEGIN
    SELECT @SQL = 'SELECT * FROM table where ''Line' + CAST(@LinNum AS NVARCHAR) + 'AStatus'' = 1'
    exec sp_executeSQL @sql

    SELECT @LinNum = @LinNum + 1
END