使用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

使用游标循环进行SQL更新插入的SQL语句的更多相关文章

  1. mysql实战优化之五: 更新/插入优化 sql优化

    通常情况下,当访问某张表的时候,读取者首先必须获取该表的锁,如果有写入操作到达,那么写入者一直等待读取者完成操作(查询开始之后就不能中断,因此允许读取者完成操作).当读取者完成对表的操作的时候,锁就会 ...

  2. C# sql 批量插入数据库的语句

    //执行DataTable数据导入 public static int UpdateDt(string strConn, DataTable dt) { try { string tablaName ...

  3. hibernate通过SQL更新数据

    @Resource(name = "hibernateTemplate") public HibernateTemplate hibernateTemplate; /** * @T ...

  4. SQL存储过程+游标 循环批量()操作数据

    本人收集的,挺有用的 1. 利用游标循环更新.删除MemberAccount表中的数据 DECLARE My_Cursor CURSOR --定义游标 FOR (SELECT * FROM dbo.M ...

  5. sql游标循环结果集

    我们知道游标是一种对结果集操作的神器,使用游标,可以很方便的循环结果集,并对结果集进行数据处理. 1.建表 CREATE TABLE [dbo].[Student]( ,) NOT NULL, ) N ...

  6. sql 游标循环当中重新赋值

    sql 游标循环当中的变量必须重新赋值不然变量的值就是前次循环的值

  7. sql 循环语句几种方式(变量循环,游标循环,事务)

    --第一   ) ,),Orders )) declare @n int,@rows int --select @rows=count(1) from pe_Orders select @rows = ...

  8. SQL SERVER循环遍历(普通循环和游标循环)

    1.首先需要一个测试表数据Student 2.普通循环 1)循环5次来修改学生表信息 --循环遍历修改记录--declare @i int   set @i=0while @i<5begin   ...

  9. sql server 存储过程的(包含事务)方法里面,采用游标循环,批量删除(修改)数据

    sqlserver 数据库 1.下面是完整的 在存储过程中 使用游标进行 循环删除的实例(包括存储过程中,事务的应用) 2.有问题的话,欢迎随时讨饶我,相信大家看下注释应该就能明白了,很简单的一个,小 ...

随机推荐

  1. 在Ubuntu下的Apache上建立新的website,以及enable mono

    1. 在Apache下建立新的web site a. $>cd /etc/apache2/ b. $>vi ports.conf 填加Listen 8090(注意不要打开8080,因为To ...

  2. 调用有道翻译API

    前两天朋友说起NASA开放了数据API,今儿突然想起从来没用过外部提供的API,然而简单用得多的貌似是有道词典API,就像试试,本来觉得应该挺简单的,用urllib模块很快就实现了. 不过测试时才发现 ...

  3. RDLC 聚合函数按条件求和,显示"错误号"

    =Sum(IIf(Fields!AValue.Value >0,Val(Fields!AValue.Value),)) 一直显示错误号 修改为 =Sum(IIf(Fields!AValue.Va ...

  4. NodeJs获取不到POST参数

    NodeJs报错,从网页端获取不到POST参数,提示错误类似如下 TypeError: Cannot read property 'username' of undefined     at C:\U ...

  5. ORACLE网络配置大全没有比这个更详细的【weber出品】

    一.起篇 现在怎么说也是互联网时代,数据库也要联网,很多朋友学习Oracle的时候无外乎搭建的是以下两种学习环境: 1.直接在windows环境下安装Oracle后直接sqlplus连接. 2.在wi ...

  6. Oracle数据库中的blob类型解析

    Oracle的Blob字段比较特殊,他比long字段的性能要好很多,可以用来保存例如图片之类的二进制数据. 写入Blob字段和写入其它类型字段的方式非常不同,因为Blob自身有一个cursor,你必须 ...

  7. 状态压缩dp zoj3802

    做这个题的时候看了看时间复杂度觉得应该是个贪心或者dp,然后贪心又很快被否定了,因为不具备贪心的一些特性,想了想觉得没什么思路.看了下网上的思路,真是让人拍案叫绝,算法的魅力就在于此啊.. 首先dp就 ...

  8. QT-Demo-Colck-01

    QT += widgets QT += core HEADERS += \ mainwindow.h SOURCES += \ mainwindow.cpp \ main.cpp #ifndef MA ...

  9. DSP TMS320C6000基础学习(3)——CCS v5软件开发环境搭建

    ================================================== DSP CCS工程文件构成 =================================== ...

  10. jquery的queue方法

    queue: queue主要用于给元素上的函数队列(默认名为fx)添加函数(动画效果),这样dequeue就可以取出并执行函数队列中的第一个函数(即最先进入函数队列的函数),delay则可以延迟元素上 ...