SQL の OpenQuery 関数で使用される次の再帰 CTE があります。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;
');
助言がありますか?ここで何か不足していますか?