LISTING 1: Expanding Hierarchies Example from SQL Server Books Online CREATE PROCEDURE expand (@current char(20)) as SET NOCOUNT ON DECLARE @level int, @line char(20) CREATE TABLE #stack (item char(20), level int) INSERT INTO #stack VALUES (@current, 1) SELECT @level = 1 WHILE @level > 0 BEGIN IF EXISTS (SELECT * FROM #stack WHERE level = @level) BEGIN SELECT @current = item FROM #stack WHERE level = @level SELECT @line = space(@level - 1) + @current PRINT @line DELETE FROM #stack WHERE level = @level AND item = @current INSERT #stack SELECT child, @level + 1 FROM hierarchy WHERE parent = @current IF @@ROWCOUNT > 0 SELECT @level = @level + 1 END ELSE SELECT @level = @level - 1 END -- WHILE