Набор CTE, введенный предложением WITH
, действителен для единственного оператора , который следует за последним определением CTE.Здесь, похоже, вам следует просто пропустить SELECT
и сделать INSERT
следующее утверждение:
WITH abcd
AS (
-- anchor
SELECT id
,ParentID
,CAST(id AS VARCHAR(100)) AS [Path]
,0 as depth
FROM @tbl
WHERE ParentId = 0
UNION ALL
--recursive member
SELECT t.id
,t.ParentID
,CAST(a.[Path] + ',' + CAST( t.ID AS VARCHAR(100)) AS varchar(100)) AS [Path]
,a.depth +1
FROM @tbl AS t
JOIN abcd AS a ON t.ParentId = a.id
)
insert into #TMP (id,parent,branch,depth) select * from abcd
select * from #TMP
(я добавил select
из #TMP
, чтобы мы все еще получалинабор результатов возвращается клиенту, хотя операторы insert
и select
теперь обращены).