比较通用的ID,ParentID结构表,返回树路径。

/*
zqonline
2009-04-21
获取提定ID的路径

调有方法:
declare @path nvarchar(4000)
exec p_Common_TreePath  'tb_dir','id','parentid','\',8,@path output
select @path
*/
CREATE   PROCEDURE  p_Common_TreePath 
    
@tablename   nvarchar ( 200 )       -- 数据表名称
    , @IDName   nvarchar ( 100 )         -- ID字段名称
    , @ParentIDName   nvarchar ( 100 )     -- ParentID字段名称
    , @PathSeparator   nvarchar ( 10 )     -- 路径分隔符
    , @IDValue   nvarchar ( 100 )         -- 待查询的ID值
    , @Path   nvarchar ( 4000 ) output     -- 输出父路径
AS


declare   @sql   nvarchar ( 4000 )
set   @path = ''

set   @sql = '
declare @id nvarchar(100)
declare @parentID nvarchar(100)
set @parentID=
''' + @IDValue + '''
while 1=1
begin
 select @id=
' + @IDName + ' ,@parentID= ' + @ParentIDName   + '  from  ' + @tablename + '  where  ' +   @IDName + ' =@parentID
 if @@rowcount=0
    begin
        break
    end

 if  len(@path)>0
    begin
    set @path=
''' + @PathSeparator + ''' +@path
    end
set @path=convert(varchar,@id)+@path    

end
'

declare   @parPath   nvarchar ( 4000 )
set   @parPath = ' @path nvarchar(4000) output '
execute  sp_executesql  @sql , @parPath , @path = @path  output

set   @path = isnull ( @path , '' )

return   0


GO

转载于:https://www.cnblogs.com/zqonline/archive/2009/04/21/1440619.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值