美好的一天StackOverflow从动态sql访问动态表
从我的动态sql创建的表可以具有任意数量的列,因为它是数据透视表。
-- Pivot the table so we get the UW as columns rather than rows
DECLARE @SQL NVARCHAR(MAX)
SET @SQL = '
SELECT *
FROM #PreProcessed
PIVOT (SUM(Quotes)
FOR [UW] IN (' + @UWColumns + ')
) AS bob'
我运行这段代码来运行我的动态sql。
EXEC sp_executesql @SQL,
N'@UWColumns nvarchar(MAX)',
@UWColumns
我的问题是,我如何存储结果表?特别是当我不知道它会有多少列时,甚至不知道列将被调用?
我尝试下面的代码,但它不工作
INSERT INTO #Temp
EXEC sp_executesql @SQL,
N'@UWColumns nvarchar(MAX)',
@UWColumns
谢谢大家
您可能需要创建一个真正的表格。在'sp_exectutesql'之外创建的临时表将在in中有作用域,但其中创建的任何临时表(临时表,变量等)将在作用域返回到调用代码时解除分配。所以,动态SQL创建一个表,以及动态SQL来填充它。或者,重新考虑您的代码以使用源(标准化)数据。 – MatBailie