Я пытаюсь изучить продвинутый 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, перейдите к непосредственному подчиненному, этот непосредственный подчиненный теперь @root и т. Д.
Спасибо