我需要使用SQL
中的CTE (Common Table Expression)
返回动态TSQL
,我的尝试不起作用:
注意:下面的查询使用链接服务器,但我的问题是相关的 甚至不使用openquery命令的任何SQL。
declare @sql nvarchar(max) = N'SELECT * FROM OPENQUERY(DATABASE1, ''SELECT * FROM tblRequisitions'')'
;WITH requisitions AS
(
EXEC (@sql)
)
SELECT * from requisitions
如何将此动态SQL加载到我的CTE
?
答案 0 :(得分:2)
你不能将动态sql合并到常规的sql中。您可以做的是创建临时表,将动态输出插入临时表,然后引用CTE中的临时表。这些方面的东西......
IF OBJECT_ID('tempdb..#temp', 'U') IS NOT NULL
DROP TABLE #temp;
CREATE TABLE #temp (
-- ColumnName DataType
);
INSERT #temp (ColumnName)
EXEC (@sql);
WITH
cte_requisitions AS (
SELECT
*
FROM
#temp t
)
SELECT
*
FROM
cte_requisitions r;