J'essaie d'apprendre SQL avancé et comment utiliser les requêtes système (serveur SQL). La requête ci-dessous est un peu confuse.Confondu comment cette requête fonctionne
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
glanées ici:
http://vyaskn.tripod.com/hierarchies_in_sql_server_databases.htm
Chaque fois que la requête est exécutée, comment est le paramètre @EmpId incrémenté? Est-ce que ça se fait? Aussi, le @root s'incrémente-t-il à chaque récursion? Par exemple. Chef de la direction est root, allez à subordonné immédiat, que subordonné immédiat est maintenant @root, etc.
Merci
Vous me battez de quelques secondes. ;-) – Thorsten