創建存儲過程,我想創建一個mssql的存儲過程運行類似以下的查詢:從遞歸查詢
SELECT thingID FROM things WHERE thingParentID = #arguments.id#
遞歸,其中然後返回一個列表積累thingID
小號由存儲過程。
有誰知道這樣的例子,他們可以鏈接到?或一些可能幫助我的文檔?
謝謝。
創建存儲過程,我想創建一個mssql的存儲過程運行類似以下的查詢:從遞歸查詢
SELECT thingID FROM things WHERE thingParentID = #arguments.id#
遞歸,其中然後返回一個列表積累thingID
小號由存儲過程。
有誰知道這樣的例子,他們可以鏈接到?或一些可能幫助我的文檔?
謝謝。
這將適用於SQL Server 2005及更高版本。
CREATE FUNCTION dbo.Ancestors (@thingID int)
RETURNS TABLE
AS
RETURN
WITH CTE AS
(
SELECT thingID, 1 [Level]
FROM dbo.things
WHERE thingParentID = @thingID
UNION ALL
SELECT p.thingID, [Level] + 1 [Level]
FROM CTE c
JOIN dbo.things p
ON p.thingParentID = c.thingID
)
SELECT thingID, [Level]
FROM CTE
GO
CREATE PROCEDURE GetAncestors (@thingID int)
AS
SELECT thingID, [Level]
FROM dbo.Ancestors(@thingID)
GO
我不認爲你需要爲此創建一個過程。所有你需要的是看看遞歸CTE – a1ex07
rtce是甜的感謝提及! – ztatic