Ciągle otrzymuję maksymalny błąd rekursji w tym zapytaniu.Maksymalna rekurencja 100 została wyczerpana przed zakończeniem instrukcji.
Najpierw myślałem, że to dlatego, że zwrócono wartość zerową, a następnie spróbowałbym dopasować wartości zerowe powodujące błąd, jednak przepisałem moje zapytanie, aby null nie zostały zwrócone, a błąd nadal występuje.
Jaki byłby najlepszy sposób do przepisać tej funkcji, tak, że błąd nie wystąpi
WITH EmployeeTree AS
(
SELECT
EMP_SRC_ID_NR Id, USR_ACV_DIR_ID_TE Uuid,
CASE Employees.APV_MGR_EMP_ID
WHEN Null THEN '0'
ELSE Employees.APV_MGR_EMP_ID
END as ApprovalManagerId
FROM
dbo.[tEmployees] as Employees WITH (NOLOCK)
WHERE
APV_MGR_EMP_ID = @Id
and Employees.APV_MGR_EMP_ID is not null
and Employees.EMP_SRC_ID_NR is not null
UNION ALL
SELECT
EMP_SRC_ID_NR Id, USR_ACV_DIR_ID_TE Uuid,
CASE Employees.UPS_ACP_EMP_NR
WHEN Null THEN '1'
ELSE Employees.UPS_ACP_EMP_NR
END as ApprovalManagerId
FROM
dbo.[tEmployees] as Employees WITH (NOLOCK)
WHERE
UPS_ACP_EMP_NR = @Id
and Employees.APV_MGR_EMP_ID is not null
and Employees.EMP_SRC_ID_NR is not null
UNION ALL
SELECT
Employees.EMP_SRC_ID_NR, Employees.USR_ACV_DIR_ID_TE,
CASE Employees.APV_MGR_EMP_ID
WHEN Null THEN '2'
ELSE Employees.APV_MGR_EMP_ID
END
FROM
dbo.[tEmployees] as Employees WITH (NOLOCK)
JOIN
EmployeeTree ON Employees.APV_MGR_EMP_ID = EmployeeTree.Id
where
Employees.APV_MGR_EMP_ID is not null
and Employees.EMP_SRC_ID_NR is not null
)
SELECT
Id AS [EmployeeId],
Uuid AS [EmployeeUuid],
ApprovalManagerId AS [ManagerId]
FROM EmployeeTree
hmm to działało ale zapytanie zwróciło wiele więcej wierszy to powinno mieć –
@bugz Maxrecursion 0 ma teraz wpłynąć zapytanie, czy trzeba szukać problemu gdzie indziej –
ahh to był okrągły w refrence moje dane, dzięki za pomoc –