ALTER PROCEDURE [dbo].[sp_items_level_test]
@versionIdvarchar(30)
AS
BEGIN
DECLARE @item_id varchar(20), @Level int;
SET @Level = 0
CREATE TABLE #TreeViewTemp
(
item_id varchar(20) NOT NULL,
desc nvarchar(500) NOT NULL,
parent_id varchar(20) NULL,
[Level] int NOT NULL
)
CREATE TABLE #TreeViewResult
(
item_id varchar(20) NOT NULL,
desc nvarchar(500) NOT NULL
)
INSERT #TreeViewTemp
SELECT item_id, desc, parent_id, @Level
FROM lib_items
WHERE parent_id = '' and version_id = @versionId
WHILE EXISTS (SELECT item_id FROM #TreeViewTemp)
BEGIN
SELECT TOP(1) @item_id = item_id
FROM #TreeViewTemp
WHERE [Level] = @Level
ORDER BY item_id
IF @@ROWCOUNT = 0
BEGIN
SET @Level = @Level - 1
CONTINUE
END
INSERT #TreeViewResult
SELECT item_id, SPACE(4 * @Level) + desc0
FROM #TreeViewTemp
WHERE item_id = @item_id
INSERT #TreeViewTemp
SELECT item_id, desc, parent_id, @Level + 1
FROM lib_items
WHERE parent_id = @item_id and version_id = @versionId
IF @@ROWCOUNT <> 0
SET @Level = @Level + 1
DELETE #TreeViewTemp
WHERE item_id = @item_id
END
SELECT item_id, desc0 FROM #TreeViewResult
DROP TABLE #TreeViewTemp
DROP TABLE #TreeViewResult
END