ms-SQL 递归调用

----递归函数--------------------------------------------------------------------------

create  function dbo.f_get_data_by_recursion
 (
  @group_father_id int
 )
  returns @groups_result table (group_id int,group_name varchar(50),group_father_id int,last_count int)
 begin
  declare @count as int
  set @count=1
  
  insert @groups_result select *,@count from groups where group_id=@group_father_id 
  while @@rowcount<>0
  begin
   set @count=@count+1
   insert @groups_result
    select g.group_id,g.group_name,g.group_father_id,@count from groups g,@groups_result gr
     where g.group_father_id=gr.group_id and gr.last_count=@count-1
  end
  return      
 end

GO
View Code
----调用举例--------------------------------------------------------------------------

create table dbo.groups
 (
  group_id int,
  group_name varchar(50),
  group_father_id int
 )


 declare @loop as int
 set @loop =1
 while @loop < 1000
 begin
  insert into groups (group_id,group_name,group_father_id) values (@loop,'name',@loop -1)
  set @loop =@loop +1
 end

set @loop =2001
 while @loop < 2500
 begin
  insert into groups (group_id,group_name,group_father_id) values (@loop,'name',@loop -1)
  set @loop =@loop +1
 end


 select * from groups
 select * from f_get_data_by_recursion(2001)

drop table dbo.groups
 drop function dbo.f_get_data_by_recursion
View Code

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值