使用SQL中的循环,可以实现许多我们需要的操作,比如SQL更新操作。下面就为您介绍使用游标循环进行SQL更新插入的SQL语句写法,希望对您深入学习SQL更新有所帮助。
- --开始事务
- BEGIN TRAN
- --不显示计数信息
- SET NOCOUNT ON
- DECLARE @ProjNo varchar(50),@CusNo varchar(50)
- --声明游标
- DECLARE CRMPSContact_cursor CURSOR FOR
- SELECT ProjNo
- FROM CRMPSContact
- WHERE ProjNo>0
- --打开游标
- OPEN CRMPSContact_cursor
- --取第一行的值给专案变量: @ProjNo
- FETCH NEXT FROM CRMPSContact_cursor
- INTO @ProjNo
- --取得客户号
- select @CusNoCusNo = CusNo
- from CRMPSProjectM
- where ProjNo = @ProjNo
- --得到CRMPSContact中某专案号对应的客户号
- update CRMPSContact
- set CusNo = @CusNo
- where ProjNo = @ProjNo
- --执行错误回滚
- if @@error!=0
- begin
- rollback tran
- return
- end
- --移动游标,其它所有行更新操作(当到结尾时退出)
- WHILE @@FETCH_STATUS = 0
- BEGIN
- --游标移到下一行
- FETCH NEXT FROM CRMPSContact_cursor
- INTO @ProjNo
- --取得客户号
- select @CusNoCusNo = CusNo
- from CRMPSProjectM
- where ProjNo = @ProjNo
- --得到CRMPSContact中某专案号对应的客户号
- update CRMPSContact
- set CusNo = @CusNo
- where ProjNo = @ProjNo
- --执行错误回滚
- if @@error!=0
- begin
- rollback tran
- return
- end
- END
- --提交所有变更
- COMMIT TRAN
- --关闭游标
- CLOSE CRMPSContact_cursor
- --释放游标
- DEALLOCATE CRMPSContact_cursor
- --恢复设置
- SET NOCOUNT OFF
- GO