재귀횟수가 100이 초과되는 오류가 나왔습니다..
난감하네요.
구글링을 해보니 이런 경우가 종종 있다네요.
발생되는 원인이 id의 값이 1 -> 2 -> 3 -> 1 이런식으로 데이터가 있을경우 무한루프가 돌아서 발생한다는 글을 봤습니다.
그럼 저런식으로 잘 못 들어간 데이터를 찾아야 되는데..찾기가 난감하네요..
데이터가 30만건이 넘게 들어가 있습니다..
수십만건이 들어가 있는 데이터에서, 도대체 저런식으로 들어가 있는 데이터를 어떻게 찾아야 하나요...
다른 해결책은 LEVEL이 3까지만 있으면 됩니다.
LEVEL이 3까지만 돌고 다음 루프로 이동 시키는 방법이 있을까요..
어렵네요..
아래는 해당 쿼리 입니다.
WITH C_TBLX AS (
SELECT
0 AS LV,
CONVERT(VARCHAR(800), ' / ' + OA.ID) AS PATH_ORDER -- SIBLINGS BY
,OA.*
FROM (
SELECT
A.ID
,A.ID_S PARENT_ID
FROM TBL_TEST A
WHERE A.KD in (select convert(varchar(100), fakeData) from tbl_change where tblname='testsub')
) OA
UNION ALL
SELECT
LV + 1
,CONVERT(VARCHAR(800), OB.PATH_ORDER + ' / ' + OA.ID) AS PATH_ORDER -- SIBLINGS BY
,OA.*
FROM (
SELECT
A.ID
,A.ID_S PARENT_ID
FROM TBL_TEST A
WHERE A.KD in (select convert(varchar(100), fakeData) from tbl_change where tblname='testsub')
) OA JOIN C_TBLX OB ON OA.PARENT_ID = OB.ID
)
SELECT
LV,
PATH_ORDER,
ID,
PARENT_ID
FROM C_TBLX
ORDER BY PATH_ORDER
맨 아래 쿼리에 where lv < 4 라고 추가해 보세요,,,