我有以下递归CTE,它在SQL中的OpenQuery函数中使用。 我使用OpenQuery来查询SQL链接服务器。
(不工作)
SELECT * FROM OPENQUERY([MyLinkedServerDB], 'WITH SPChainCTE (NAME, INHERIT_FROM)
AS
(
Select sp.NAME, sp.INHERIT_FROM from PRODUCT AS sp
where NAME = ''ProductName''
UNION ALL
Select sp.NAME, sp.INHERIT_FROM from PRODUCT AS sp
INNER JOIN SPChainCTE AS ch on sp.NAME = ch.INHERIT_FROM
)
Select NAME, INHERIT_FROM from SPChainCTE;
');
以上CTE不起作用。
但是,如果我使用OpenQuery执行非递归CTE,它可以正常工作。 (这有效)
SELECT * FROM OPENQUERY([FP], 'WITH SPChainCTE (NAME, INHERIT_FROM)
AS
(
Select sp.NAME, sp.INHERIT_FROM from ENG.FOCALPOINT.SW_PRODUCT AS sp
where sp.NAME = ''ProductName''
)
Select NAME, INHERIT_FROM from SPChainCTE;
');
有什么建议吗?我在这里错过了什么吗?