我想學習先進的SQL和如何使用系統查詢(SQL服務器)。下面的查詢有點令人困惑。困惑這個查詢如何工作
CREATE PROC dbo.ShowHierarchy
(
@Root int
)
AS
BEGIN
SET NOCOUNT ON
DECLARE @EmpID int, @EmpName varchar(30)
SET @EmpName = (SELECT EmpName FROM dbo.Emp WHERE EmpID = @Root)
PRINT REPLICATE('-', @@NESTLEVEL * 4) + @EmpName
SET @EmpID = (SELECT MIN(EmpID) FROM dbo.Emp WHERE MgrID = @Root)
WHILE @EmpID IS NOT NULL
BEGIN
EXEC dbo.ShowHierarchy @EmpID
SET @EmpID = (SELECT MIN(EmpID) FROM dbo.Emp WHERE MgrID = @Root AND EmpID > @EmpID)
END
END
GO
從這裏摘自:
http://vyaskn.tripod.com/hierarchies_in_sql_server_databases.htm
查詢運行每次,怎麼會是@EmpId參數會增加嗎?它自己做?另外,每個遞歸都有@root增量嗎?例如。 CEO是根,去直接下屬,即直接下屬,現在@root等
感謝
你打我幾秒鐘。 ;-) – Thorsten 2009-02-12 22:06:08