
[dbo].[GetAdditionalDataByGuidPath]
CREATE PROCEDURE [dbo].[GetAdditionalDataByGuidPath]
@path AS VARCHAR(512),
@selectedOrderNum AS INT OUTPUT,
@maxOrderNumber AS INT OUTPUT
AS
BEGIN
SET NOCOUNT ON;
DECLARE @pos AS INT
SET @pos= 1
DECLARE @start AS INT
SET @start= 1
DECLARE @guid AS VARCHAR(40)
DECLARE @lenght AS INT
DECLARE @ParentOrderNumbers TABLE (order_num int)
DECLARE @depth AS INT
SET @depth= 0
DECLARE @parent_id AS VARCHAR(40)
SET @parent_id = ''
INSERT INTO @ParentOrderNumbers (order_num) VALUES (-1)
WHILE(@pos > 0) BEGIN
SET @pos= CHARINDEX('\',@path,@start)
SET @lenght= @pos-@start
if (@lenght < 0) SET @lenght=40
SET @guid= SUBSTRING(@path, @start, @lenght)
SET @start= @pos + 1
print @parent_id
SELECT @selectedOrderNum = order_num FROM dbo.outline WHERE doc_id = @guid and depth = @depth and parent_id=@parent_id
INSERT INTO @ParentOrderNumbers (order_num) VALUES (@selectedOrderNum)
SET @depth= @depth + 1
SET @parent_id = @guid
END
DELETE FROM @ParentOrderNumbers WHERE (order_num = @selectedOrderNum)
DECLARE @selectedDepth AS INT
SELECT @selectedDepth = outline.depth FROM outline
WHERE outline.order_num = @selectedOrderNum
SELECT TOP 1 @maxOrderNumber = outline.order_num - 1
FROM outline
WHERE
outline.order_num > @selectedOrderNum AND
outline.depth <= @selectedDepth
ORDER BY outline.order_num
IF (@maxOrderNumber IS NULL)
BEGIN
SELECT @maxOrderNumber=MAX(outline.order_num) FROM OUTLINE
END
SELECT * FROM @ParentOrderNumbers
END
GO