Sql server的游标使用

来源:互联网 发布:音质好的软件 编辑:程序博客网 时间:2024/06/05 08:52

项目需要为sql server的一张表,添加一列时间戳,为时间戳设置初始值,第一条数据取值一个月前,往后的数据加1秒,使用游标完成。

先贴代码:

create procedure modifyDefault
as 
declare @j datetime;
declare @tmp varchar(72);
declare myCursor CURSOR for (select fd_id from prod_scm_account_info);
set @j=(DATEADD(MONTH,-1,GETDATE()));
open myCursor;
fetch next from myCursor into @tmp;
while @@FETCH_STATUS=0
  begin
update prod_scm_account_info set fd_last_modified_time=@j where fd_id= @tmp;
set @j=DATEADD(S,1,@j);
fetch next from myCursor into @tmp;
  end ;
close myCursor;
deallocate myCursor;
go
exec modifyDefault


遇到两个坑:1、使用declare定义变量时,一定要设置length,不然可能存在设置变量值不生效的问题。

                       2、使用where current of时,发现执行效率不是一般的低,后改为用id作游标。

原创粉丝点击