我的表中有两列,分别为Space,Object,下面是表中的数据
Space                          Object
----------------------------------------------------
cellar                     washing machine                                   
washing machine                 nani 
这个表代表的意思是clear中有washing machine,washing machine中
有nani,现在我想根据nani,找到最上层的容器(空间)
我想写一个存储过程,输入nani,输出cellar
请各位大侠帮帮忙,谢谢先!

解决方案 »

  1.   

    ----创建测试数据
    declare @t table(space varchar(20),object varchar(20))
    insert @t 
    select 'clear','washing machine' union all
    select 'washing machine','nani'
    ----查询
    declare @s varchar(20)
    select @s = space from @t where object = 'nani'
    while @@rowcount > 0
    begin
         select @s = space from @t where object = @s
    end
    select @s
      

  2.   

    用函数create function fn_getroot(
    @Object varchar(30)
    )
    returns varchar(30)
    as 
    begin
       declare @r varchar(30)
       select @r= space from tablename where [object] = @object
       if @r is null 
           return @object
          return dbo.fn_getroot(@r)
    end
    go--调用
    select dbo.fn_getroot('nani')