Tôi tiếp tục nhận được lỗi đệ quy tối đa với truy vấn này. Lúc đầu, tôi nghĩ rằng đó là bởi vì một null đã được trả lại và sau đó nó sẽ cố gắng và phù hợp với các giá trị null gây ra lỗi tuy nhiên, tôi viết lại truy vấn của tôi để nulls không được trả lại và lỗi vẫn xảy ra. NGUYÊN NHÂNSố đệ quy tối đa 100 đã cạn kiệt trước khi hoàn thành tuyên bố
Điều gì sẽ là cách tốt nhất để viết lại chức năng này, do đó các lỗi sẽ không xảy ra
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 này làm việc nhưng truy vấn lại rất nhiều hàng sau đó nó phải có –
@bugz Maxrecursion 0 bây giờ không ảnh hưởng đến truy vấn của bạn, làm bạn phải tìm kiếm các vấn đề khác –
ahh đó là một refrence tròn dữ liệu của tôi, cảm ơn sự giúp đỡ –