如何在SQL Server 2012中将CTE与T-SQL变量一起使用?

如何在SQL Server 2012中将CTE与T-SQL变量一起使用?,sql,sql-server,Sql,Sql Server,我有一个包含另一个变量的T-SQL变量,我想基于这个T-SQL变量创建一个CTE 我曾尝试在CTE中打印T-SQL变量,但它不起作用 declare @Hid nvarchar(5), @mysql nvarchar(max) set @Hid = 1 set @mysql = 'SELECT CONVERT(DATE, GETDATE()) AS RptDate, a.[key],

我有一个包含另一个变量的T-SQL变量,我想基于这个T-SQL变量创建一个CTE

我曾尝试在CTE中打印T-SQL变量,但它不起作用

declare
    @Hid nvarchar(5),
    @mysql nvarchar(max)

set @Hid = 1

set @mysql = 'SELECT    
                  CONVERT(DATE, GETDATE()) AS RptDate,
                  a.[key], 
                  b.[Country], b.AcNumber, b.AcName, 
                  DATEDIFF([d], a.[ItemDate], GETDATE()) AS [IAge],
                  [comment] AS OfficerComment,
                  (SELECT dbo.fnMgrCmnt(2,' + @Hid + ', a.rowid, 1)),
                  c.[firstname] + '' '' + c.[lastname] AS Modifiedby,
                  d.hubId, 
                  '''' AS origin,
                  b.Authname,
                  CONVERT(DECIMAL(38, 2), a.amount) AS Amt,
                  b.AcOwner, 
                  a.rowid AS rowid
              FROM [dbo].[T_AccRecon] a 
              INNER JOIN [dbo].[VW_TMain] b ON a.[key] = b.[Key] 
              LEFT JOIN [dbo].[users] c ON a.Modifiedby = c.userId 
              LEFT JOIN [dbo].[Country] d ON b.Country = d.code
                                          AND b.AcOwner = d.hubcode'
我想从这个
@mysql
变量创建一个CTE。我试过了

;WITH MY_CTE AS (@mysql) 

但它不起作用。对此可以做些什么?

第一件事是,当您构建一个字符串时,它是动态sql,这意味着您必须执行该字符串。第二件事是您需要使用参数,而不是使用输入执行字符串。第三件事是,我认为您首先不需要动态sql,我支持这一点。你只是在展示一些更大的东西的摘录吗?您可以轻松地直接在示例中运行该sql语句。可能会发布更大的示例,包括CTE。