龙鱼家园,个性,交流,技术,专注于网站技术的研究 龙鱼家园 | 利用游标循环进行更新插入的SQL事务语句
 

利用游标循环进行更新插入的SQL事务语句

--开始事务
BEGIN TRAN

--不显示计数信息
SET NOCOUNT ON

DECLARE @UserID varchar(512)
DECLARE @a int
set @a=10000

--声明游标
DECLARE CRMPSContact_cursor CURSOR FOR
SELECT [UserID] FROM [gmcc].[dbo].[cvv_Users]

--打开游标
OPEN CRMPSContact_cursor

--取第一行的值给变量
FETCH NEXT FROM CRMPSContact_cursor
INTO @UserID

--执行语句
UPDATE [gmcc].[dbo].[cvv_Users]
SET [WorkID]=@a
WHERE [UserID]=@UserID
set @a=@a+1

--执行错误回滚
if @@error!=0
begin
rollback tran
return
end

--移动游标,其它所有行更新操作(当到结尾时退出)
WHILE @@FETCH_STATUS = 0
BEGIN
--游标移到下一行
FETCH NEXT FROM CRMPSContact_cursor
INTO @UserID

--执行语句,从第二行开始
UPDATE [gmcc].[dbo].[cvv_Users]
SET [WorkID]=@a
WHERE [UserID]=@UserID

set @a=@a+1

--执行错误回滚
if @@error!=0
begin
rollback tran
return
end

END

--关闭游标
CLOSE CRMPSContact_cursor

--释放游标
DEALLOCATE CRMPSContact_cursor

--提交所有变更
COMMIT TRAN

--恢复设置
SET NOCOUNT OFF
GO

http://www.cnblogs.com/wgx1323/archive/2007/06/12/780066.html


Search

友情链接

  • 微足迹
  • 资质通鉴
  • 译言
  • 代码发芽网
  • 清清月儿
  • 二频
  • dotnetblogengine
  • 苹果树下
  • 联系我:
    leonardleonard@126.com

    © Copyright 2012