sql server 求大神 解决递归问题
一张表有三个字段id,up_id,route,每条数据中up_id是该id的上级id,我想写一条语句或者写一个存储过程,生成route字段里面的内容:route的生成规则...
一张表有三个字段 id,up_id,route,每条数据中up_id是该id的上级id,我想写一条语句或者写一个存储过程,生成route字段里面的内容:
route的生成规则是,该条数据的id +’,‘+该条数据的上级route。 展开
route的生成规则是,该条数据的id +’,‘+该条数据的上级route。 展开
展开全部
这个需要写一个函数来做。
CREATE FUNCTION [dbo].[fget_route]
(
@cId VARCHAR(10),
@croute VARCHAR(8000)
)
RETURNS varchar(8000)
AS
BEGIN
DECLARE @uproute VARCHAR(1000)
DECLARE @up_Id VARCHAR(10)
IF @cId <> '0' AND @cId <> '' BEGIN
--取到上级ID
SELECT @up_Id = up_Id FROM [532信息] WHERE id = @cId
--取上级route
SELECT @uproute = [route] FROM [532信息] WHERE id = @up_Id
IF @croute <> '' BEGIN
SET @croute = @cId+','+@uproute+ ',' +@croute
END
ELSE BEGIN
SET @croute = @cId+','+@uproute
END
RETURN dbo.fget_route(@up_Id,@croute)
END
RETURN @Allroute
END
--版权所有:532信息网
CREATE FUNCTION [dbo].[fget_route]
(
@cId VARCHAR(10),
@croute VARCHAR(8000)
)
RETURNS varchar(8000)
AS
BEGIN
DECLARE @uproute VARCHAR(1000)
DECLARE @up_Id VARCHAR(10)
IF @cId <> '0' AND @cId <> '' BEGIN
--取到上级ID
SELECT @up_Id = up_Id FROM [532信息] WHERE id = @cId
--取上级route
SELECT @uproute = [route] FROM [532信息] WHERE id = @up_Id
IF @croute <> '' BEGIN
SET @croute = @cId+','+@uproute+ ',' +@croute
END
ELSE BEGIN
SET @croute = @cId+','+@uproute
END
RETURN dbo.fget_route(@up_Id,@croute)
END
RETURN @Allroute
END
--版权所有:532信息网
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询