有人可以检查此代码有什么问题吗?我已经检查了其他问题以供参考,但它仍无效。
declare @sourceTable varchar(500)
declare @year varchar(22)
declare @month varchar(3)
declare @test varchar(12)
declare @result varchar(8)
declare @index int
declare @string varchar(15)
set @string = (SELECT DISTINCT TOP 1 REPLACE(dbo.fn_Parsename(WHOLEROW, '|', 0), CHAR(9), '') FROM #temp1)
set @test = (select UPPER(convert(datetime,substring(@string,2,charindex('-',@string,1)-2))))
set @month =(left(@test,3))
set @year = (right(@test,5))
set @result = @month + @year
-- select @result
set @sourceTable = 'gen_048_'+@result
select @sourceTable
declare @string2 varchar(255)
set @string2 = (select convert(varchar(55),refdate)+''-''+convert(varchar(55),refcount) FROM @sourceTable)
select @string2
这是错误
必须声明表变量“@sourceTable”。
答案 0 :(得分:2)
您需要动态查询
SET @string2 = 'select convert(varchar(55),refdate)+''-''+convert(varchar(55),refcount) FROM '
+ Quotename(@sourceTable)
EXEC (@string2)
答案 1 :(得分:1)
你没有宣布@sourcetable,错误大声而清晰地说出来。
在开头添加:
declare @sourcetable varchar(50)
另外,我认为您需要使用动态SQL来进行此类查询和变量。
答案 2 :(得分:0)
set @string2 = (select convert(varchar(55),refdate)+'-'+convert(varchar(55),refcount) FROM @sourceTable)