我正在动态创建SQL查询。在创建它之后,我想执行它并将其存储为临时表。
WITH [VALIDACCOUNTS] AS( EXEC (@sqlQuery))
答案 0 :(得分:1)
您有两个解决方案:
作为第一个解决方案,您只需使用INSERT EXEC
即可。如果您有指定的结果集,这将有效。如果您的过程只返回一个具有固定结果设计的结果集,则可以使用此方法。
只需创建具有匹配列和数据类型的临时表即可。之后你可以这样称呼:
INSERT INTO #yourTemporaryTable
EXEC(@sql)
第二个解决方案是使用OPENROWSET
,这可能会产生一些副作用。
您可以阅读更多相关信息here。
INSERT INTO #yourTemptable
SELECT *
FROM OPENROWSET('SQLNCLI', 'DRIVER={SQL Server};',
'EXEC (''+@sql+''))'