DECLARE cur scroll CURSOR FOR SELECT tel_tableid,tel_order FROM sheet1 FOR UPDATE OPEN cur fetch next from cur--初始就要给游标赋直 declare @row int,@i int set @i=0 --set @row=@@cursor_rows --while @row>0-------------此处判断用游标的@@fetch_status全局变量就可以了 while (@@fetch_status<>-1) begin set @i=@i+1 update sheet1 set tel_order=@i where current of cur ---set @row=@row-1 fetch next from cur end close cur deallocate cur
--动态游标 dynamic declare @row int,@i int select @i=0 DECLARE cur dynamic CURSOR FOR SELECT tel_tableid,tel_order FROM sheet1 FOR UPDATE of tel_order OPEN cur fetch next from cur while (@@fetch_status = 0) begin set @i=@i+1 update sheet1 set tel_order=@i where current of cur fetch next from cur end close cur deallocate cur
FOR SELECT tel_tableid,tel_order
FROM sheet1
FOR UPDATE
OPEN cur
fetch next from cur--初始就要给游标赋直
declare @row int,@i int
set @i=0
--set @row=@@cursor_rows
--while @row>0-------------此处判断用游标的@@fetch_status全局变量就可以了
while (@@fetch_status<>-1)
begin
set @i=@i+1
update sheet1 set tel_order=@i where current of cur
---set @row=@row-1
fetch next from cur
end
close cur
deallocate cur
定义成update类型没有成功,还是read-only型,所以后面要再游标上修改数据就会出错。
具体原因我忘了,我也遇到过,后来我调好了,忘了如何调的呢。记得这里是个逻辑上的问题,
看似合理其实不合理。
declare @row int,@i int
select @i=0
DECLARE cur dynamic CURSOR FOR SELECT tel_tableid,tel_order FROM sheet1 FOR UPDATE of tel_order
OPEN cur
fetch next from cur
while (@@fetch_status = 0)
begin
set @i=@i+1
update sheet1 set tel_order=@i where current of cur
fetch next from cur
end
close cur
deallocate cur