在SqlServer2000里declare @chvID char(32)
set @chvID = '7FD8751399D34096AAEE2DD278B8E3BD'
select @chvID= ParentActorObjectID from GameObject.ActorGameObject where ActorObjectID = @chvID and ParentActorObjectID <> '0' 
 
这个语句为什么只会执行一次查询呢 我想要通过这种一条语句的方式查询出这行数据的最顶层 应该怎么做啊不要写while循环哈

解决方案 »

  1.   

    參照
    http://blog.csdn.net/roy_88/archive/2006/12/24/1458449.aspx
      

  2.   

    编译时@chvID的值就确定了,不会在滚动赋值过程中再给where过滤那里的@chvID重新赋值,所以不会有预期的效果。
      

  3.   

    sql2005中可以用cte嵌套,sql2000中只能写循环或函数。楼主是...好像我有印像
      

  4.   

    declare @chvID char(32) 
    set @chvID = '7FD8751399D34096AAEE2DD278B8E3BD' 
    WHILE EXISTS (select 1 from GameObject.ActorGameObject where ActorObjectID = @chvID and ParentActorObjectID <> '0' )
    select @chvID= ParentActorObjectID from GameObject.ActorGameObject where ActorObjectID = @chvID and ParentActorObjectID <> '0'