使用游标循环进行SQL更新插入的SQL语句

时间:2021-07-21 08:16:09

使用SQL中的循环,可以实现许多我们需要的操作,比如SQL更新操作。下面就为您介绍使用游标循环进行SQL更新插入的SQL语句写法,希望对您深入学习SQL更新有所帮助。

  1. --开始事务
  2. BEGIN TRAN
  3. --不显示计数信息
  4. SET NOCOUNT ON
  5. DECLARE @ProjNo varchar(50),@CusNo varchar(50)
  6. --声明游标
  7. DECLARE CRMPSContact_cursor CURSOR FOR
  8. SELECT ProjNo
  9. FROM CRMPSContact
  10. WHERE ProjNo>0
  11. --打开游标
  12. OPEN CRMPSContact_cursor
  13. --取第一行的值给专案变量: @ProjNo
  14. FETCH NEXT FROM CRMPSContact_cursor
  15. INTO @ProjNo
  16. --取得客户号
  17. select @CusNoCusNo = CusNo
  18. from CRMPSProjectM
  19. where ProjNo = @ProjNo
  20. --得到CRMPSContact中某专案号对应的客户号
  21. update CRMPSContact
  22. set CusNo = @CusNo
  23. where ProjNo = @ProjNo
  24. --执行错误回滚
  25. if @@error!=0
  26. begin
  27. rollback tran
  28. return
  29. end
  30. --移动游标,其它所有行更新操作(当到结尾时退出)
  31. WHILE @@FETCH_STATUS = 0
  32. BEGIN
  33. --游标移到下一行
  34. FETCH NEXT FROM CRMPSContact_cursor
  35. INTO @ProjNo
  36. --取得客户号
  37. select @CusNoCusNo = CusNo
  38. from CRMPSProjectM
  39. where ProjNo = @ProjNo
  40. --得到CRMPSContact中某专案号对应的客户号
  41. update CRMPSContact
  42. set CusNo = @CusNo
  43. where ProjNo = @ProjNo
  44. --执行错误回滚
  45. if @@error!=0
  46. begin
  47. rollback tran
  48. return
  49. end
  50. END
  51. --提交所有变更
  52. COMMIT TRAN
  53. --关闭游标
  54. CLOSE CRMPSContact_cursor
  55. --释放游标
  56. DEALLOCATE CRMPSContact_cursor
  57. --恢复设置
  58. SET NOCOUNT OFF
  59. GO