这似乎是一个简单的事件,您只需声明一个变量,并将其作为列传递给存储过程。我需要将列名传递给将在我的查询中使用的存储过程。是否可以声明它以便我可以将它用作列名或者是否有某些方法可以将字符串转换为列类型?
where Line1AStatus = 1
我需要能够将该号码在线路状态中传递给我的存储过程。到目前为止,我已尝试过这些方法。谢谢你的帮助。
where Line + @LineNum + AStatus = 1
where 'Line' + @LinNum + 'AStatus' = 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