我正在尝试在等号的左侧组合两个声明的字符串变量,这将使我能够选择将调用我的变量。这可能吗?我想我可以找到我想做的工作,但下面的代码会更清晰。
这是我到目前为止所做的,但它不起作用:
DECLARE @operate VARCHAR(2000)
DECLARE @date5 VARCHAR(6)
DECLARE @month VARCHAR(2)
SET @month=5
SET @operate='(@date' +@month+ '=10)'
EXEC(@operate)
PRINT(@date5)
答案 0 :(得分:0)
这就是你所要求的,尽管我不禁觉得它不是最好的工作方式,而且可能只是存储未来的维护问题。如果没有更多的上下文信息,很难提出替代方案。考虑创建一个关于更高级别问题的问题以及处理它的方法。我怀疑在表格中存储数据会更简单吗?
假设所有@dateX变量都是varchar(6):
DECLARE @operate NVARCHAR(2000)
DECLARE @params NVARCHAR(2000)
DECLARE @date5 VARCHAR(6)
DECLARE @month VARCHAR(2)
SET @month=5
SET @operate=N'set @date' + @month + '=10'
SET @params=N'@date' + @month + ' varchar(6) OUTPUT'
exec master.dbo.sp_ExecuteSQL @operate, @params, @date5=@date5 output
PRINT(@date5)