游标:declare  cursor_insert cursor for select c# from cs
declare @i int
open cursor_insert
fetch cursor_insert into @i
while @@fetch_status=0
begin
  print @i
  fetch cursor_insert into @i
end
close cursor_insert
deallocate cursor_insert

解决方案 »

  1.   

    create proc p_test
    as
    declare @a varchar(100),@b varchar(100)
    select top 0 * into 新表 from 旧表
    set @b=''
    declare tb cursor for select 可比较的字段 from 旧表
    open tb
    fetch next from tb into @a
    while @@fetch_status=0
    begin
      if @a>@b
        insert into 新表 select * from 旧表 where 可比较的字段=@a
      else
        update 新表 set 可比较的字段=@a where 可比较的字段=@b
      set @b=@a
      fetch next from tb into @a
    end
    close tb
    deallocate tb
    go
      

  2.   

    create procedure pd_name
    as
    declare @colname int
    declare @new_colname int
    declare my_cursor cursor for select colname from 旧表
    open my_cursor
    fetch next from my_cursor into @colname
    select top 1 id=identity(int,1,1),colname into 新表 from 旧表
    while @@fetch_status=0
    begin
      fetch next from my_cursor into @colname
      select top 1 @new_colname=colname from 新表 order by id desc
      if(@new_colname>=@colname)
        exec('insert into 新表(colname) values('+@colname+')'
      else
        exec('update 新表 set colname='+@new_colname+' where id=(select max(id) from 新表)'
    end
    close my_cursor
    deallocate my_cursor
    alter table 新表 drop column id