treecode

USE [DNF_09] GO /****** Object:  UserDefinedFunction [dbo].[Dnff_sys_GetTree]    Script Date: 11/07/2011 16:34:10 ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER ON GO

 

-- Drop FUNCTION  Dnff_sys_GetTree ALTER FUNCTION  [dbo].[Dnff_sys_GetTree]( /*    delete Dnft_tra_TreeCode    insert Dnft_tra_TreeCode(key_seq,link_key_seq,Tree_Name,SortID) select key_seq,link_key_seq,menu_name,SortID from Dnft_sys_Menu    select * from dbo.Dnff_sys_GetTree('root',100,'   ','')    delete Dnft_tra_TreeCode */ @key_seq_P  varchar(Max), @iLevel  int, @Tree_NameFill_P  varchar(Max), @Tree_Code_P  varchar(Max) )RETURNS @re TABLE(Tree_Name nvarchar(Max),Tree_Code nvarchar(Max),key_seq varchar(50),SortID int)

AS   BEGIN  

declare @Tree_Name nvarchar (100)  declare @key_seq varchar (50)   declare @iLevelIndex  int;set @iLevelIndex=0 declare crRoll cursor for   select Tree_Name,key_seq from Dnft_tra_TreeCode (nolock) where link_key_seq=@key_seq_P order by SortID asc,up_dtime desc

open crRoll   while 1=1  --@i<@count     begin         fetch next from crRoll into  @Tree_Name,@key_seq       if @@fetch_status <> 0 break           begin                declare @Tree_Code varchar(Max);                set @Tree_Code=case when @Tree_Code_P=''                               then '@-'+dbo.Dnff_sql_IntToString(@iLevelIndex+1,4)                               else @Tree_Code_P+'-'+dbo.Dnff_sql_IntToString(@iLevelIndex+1,4)                               end                               -- Add Node                insert @re values(@Tree_NameFill_P+@Tree_Name,@Tree_Code ,@key_seq,-1)                               -- Call MySelf                if (select count(*) from Dnft_tra_TreeCode (nolock) where link_key_seq=@key_seq)>0 and @iLevelIndex<@iLevel                  begin                     declare @iLevelSub int;set @iLevelSub=@iLevel-1                     insert into @re                       select isnull(@Tree_NameFill_P+Tree_Name,''),Tree_Code ,key_seq,-1                       from dbo.Dnff_sys_GetTree(@key_seq,@iLevelSub,@Tree_NameFill_P,@Tree_Code)                  end               set @iLevelIndex=@iLevelIndex+1         end     end    close crRoll  deallocate crRoll

--更新SortID         update @re set SortID=convert(int,case when len(isnull(tree_Code,'-1'))<6 then '-1' else right(tree_Code,4) end)

RETURN   END

 

 

转载于:https://www.cnblogs.com/isunstudio/archive/2011/11/07/2239426.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值