Sql server的游标使用

本文介绍如何在SQL Server中为一张表添加时间戳列,并设置初始值为一个月前的时间,之后每条记录递增1秒。通过游标实现数据更新。

项目需要为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作游标。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值