我想学习先进的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