【发布时间】:2009-02-12 21:58:24
【问题描述】:
我正在尝试学习高级 sql 以及如何使用系统查询 (sql server)。下面的查询有点混乱。
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,去直属下属,那个直属下属现在是@root,等等。
谢谢
【问题讨论】: