Как мы можем изменить ниже CTE-запрос (рекурсивный) на простое подмножество sql:
Создать представление.
create view links
as
WITH links (parent, child) AS
( SELECT parent, child
FROM Heirarchy_Table
WHERE parent = '111111'
UNION ALL
SELECT ht.parent, ht.child
FROM Heirarchy_Table ht
INNER JOIN links ON links.child = ht.parent)
SELECT * FROM links fl;
Тогда вы можете просто запросить представление
select * from links
Или вы можете использовать встроенную табличную функцию, иногда называемую «параметризованным представлением», например:
create or alter function GetLinks(@parent int)
returns table
as
return
WITH links (parent, child) AS
(SELECT parent, child
FROM Heirarchy_Table
WHERE parent = @parent
UNION ALL
SELECT ht.parent, ht.child
FROM Heirarchy_Table ht
INNER JOIN links ON links.child = ht.parent)
SELECT * FROM links fl;
, к которой вы можете обращаться, например:
select * from GetLinks(1111)