我有CTE作爲一個UDF,並試圖讓它採取什麼都沒有默認值的情況下返回的結果應該是一切。將null傳遞給CTE以獲取所有記錄作爲默認值?
我想稱呼其爲這樣的默認:
select * from fnGetEmployeeHierarchyByUsername
我UDF/CTE是:
alter FUNCTION [dbo].[fnGetEmployeeHierarchyByUsername]
(
@AMRSNTID varchar(100) = null
)
RETURNS TABLE
AS
RETURN
(
WITH yourcte AS
(
SELECT EmployeeId, ManagerAMRSNTID, ManagerID, AMRSNTID, FullName, 0 as depth--, Name
FROM Employees
WHERE AMRSNTID = @AMRSNTID
UNION ALL
SELECT e.EmployeeId, e.ManagerAMRSNTID, e.ManagerID, e.AMRSNTID, e.FullName, y.depth+1 as depth--, e.Name
FROM Employees e
JOIN yourcte y ON e.ManagerAMRSNTID = y.AMRSNTID
)
SELECT EmployeeId, ManagerID, AMRSNTID, FullName, depth--, Name
FROM yourcte
)
我怎樣才能得到它這樣的工作嗎?
我得到這個錯誤:終止聲明。報表完成前,最大遞歸100已用盡。 – kacalapy 2010-12-13 18:45:16
它似乎永遠運行。自引用表Employees擁有1000條記錄,可創建1000個節點的樹。添加OPTION(MAXRECURSION 0)的結果在25秒後停止時產生了500,000條記錄。 – kacalapy 2010-12-13 18:58:13
@kacalapy:然後你有一個遞歸。 EmpA到EmpB EmpC到EmpA等 – gbn 2010-12-13 19:26:08