设置后 tsql 变量为空

tsql variable is null after set

我正在尝试生成一个子集,我需要用它来构造一个更大的查询,但我的声明似乎将变量设置为 null(或根本不设置)我一直试图弄清楚我哪里出错了,但打印语句在这里似乎不起作用。 (因此我怀疑它们是 NULL)

DECLARE @selectCols nvarchar(4000)
        DECLARE @cols nvarchar(4000)
        SET @selectCols =
        'SELECT  '+@cols+' = isnull('+@cols+' + '','', '') + ''['' + CONVERT(nvarchar, TimeIndex) + '']'' 
        from (select top 6 timeindex from (select distinct top 6 TimeIndex from '+@db_id+'.[webhistory].[Prediction_FillpercentageDays]
        order by TimeIndex desc)as a1 order by TimeIndex asc) as a2'
        EXECUTE (@selectCols);

    SELECT CAST('<root><![CDATA[' + @selectCols + ']]></root>' AS XML)

我的问题是:我错过了什么?我觉得我错过了一些非常简单的东西。 (是的@db_id已经设置)

在 tsql 中,null 是未定义的,任何东西 + null 都是 null。

您尚未为 @cols 赋值,因此您的 @selectCols returns 为空。给@cols赋值试试。

DECLARE @cols nvarchar(4000) = 'Assign your value here'