游标和等效游标的两种方法

 1.游标
  定义游标:declare tCs cursor
     for select dd,ss from table
  打开游标:
     open tcs
  读取游标值:
     Fetch next from tCs into @dd,@ss --这边数据列需和定义的游标列数一致
    while (@@Fetch_Status=0)--表示读取成功
     begin
    需要的处理过程
    Fetch next from tCs into @dd,@ss--读取下一条,如果没有则@@Tetch...不为0
    end
  
  2.等效游标的处理方法

  以下两种方法各有弊端:第一种,只适用于id为自增长的情况。id出现重复时,则重复的数据只处理了一条。
   第二种,适用于比较小数量的处理。  

 1) 获取数据中最小ID,逐条处理数据。
   获取需要处理数据的最小ID:select @minid=min(id) from table
   while isnull(@minId,0)>0  --如果取出结果为空null --跳出循环

begin

select * from where id=@minid--取出这条记录处理

--do sth….
   select @minId=min(id) from table where id>@minid--初始化下一个最小ID:

end
 2)  将数据存入临时表中,此临时表设置自增长主键。通过它循环处理数据

   创建表变量:
    create @table table( id int identity(1,1),na varchar)
    insert into @table select na from table
    select @id=select min(id),@count=count(1) from @table
    
    while @count>@id

begin
     select * from table where id=@id
    -- do something…..
     set @id=@id+1

end

posted @ 2013-01-07 09:36  spandiv  阅读(173)  评论(0编辑  收藏  举报