Хранимая процедура upDBTreeGetFullPath
Процедура возвращает весь путь до заданного узла в виде списка идентификаторов узлов начиная с узла первого уровня.
CREATE PROCEDURE [upDBTreeGetFullPath]
@idDBTree INT,
@idNode INT
AS
DECLARE @Error INT
SET @Error=0
SET NOCOUNT ON
IF NOT Exists(SELECT * FROM DBTree WHERE idDBTree=@idDBTree AND idNode=@idNode) BEGIN
SET NOCOUNT OFF
RAISERROR ('Нет такого узла',16,1)
RETURN 1
END
IF @@ERROR<>0 SET @Error=@@ERROR
CREATE TABLE #TMP_FullPath (idNode INT, [Text] VARCHAR (255),L INT IDENTITY NOT NULL )
IF @@ERROR<>0 SET @Error=@@ERROR
DECLARE @idTheNode INT,@idTheParent INT
SET @idTheParent=@idNode
WHILE @idTheParent IS NOT NULL BEGIN
INSERT #TMP_FullPath (idNode,[Text])
SELECT idNode,[Text] FROM DBTree WHERE idDBTree=@idDBTree AND idNode=@idTheParent
IF @@ERROR<>0 SET @Error=@@ERROR
SET @idTheNode=@idTheParent
SET @idTheParent=NULL
SELECT @idTheParent=idParent FROM DBTree WHERE idDBTree=@idDBTree AND idNode=@idTheNode
IF @@ERROR<>0 SET @Error=@@ERROR
END
IF @Error<>0 BEGIN
DROP TABLE #TMP_FullPath
SET NOCOUNT OFF
RETURN 2
END
SET NOCOUNT OFF
SELECT idNode,[Text] FROM #TMP_FullPath ORDER BY L DESC
SET NOCOUNT ON
DROP TABLE #TMP_FullPath
SET NOCOUNT OFF
Сайт управляется системой
uCoz