使用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. Android(性能)

    ■ 数据传输 对象和字节流之间的转换 为什么要转? 持久化(装逼说法,JVM非运行的场合),他进程(装逼说法,其他机器JVM,不同的JVM) Parcelable和Serializable 初衷: P ...

  2. 【nodejs学习】1.文件操作

    1.小文件拷贝,使用nodejs内置模块 var fs = require('fs'); function copy(src, dst){ fs.writeFileSync(dst, fs.readF ...

  3. RAC的负载均衡有2种方式

    RAC的负载均衡有2种方式1:数据库服务器端 设置remote_listener2: 客户端tns配置 一般连接串这么写:ess_hb_i1=  (DESCRIPTION =    (ADDRESS ...

  4. access 2007 vba 开发中学到的知识(一)

    使用ado连接本身的数据库,需要先创建一个 adodb.connection的连接对象 Set cn = CreateObject("ADODB.Connection") 数据库的 ...

  5. javascript:Array.slice.call 到Array.prototype.slice.call

    举个从对象到数组的例子: var obj={}; obj[1]=1; obj[2]=2; obj.length=2; var arr =Array.prototype.slice.call(obj); ...

  6. linux 下 重启apache

    重启 apache #service httpd restart

  7. php中urlencode使用

    URLEncode的方式一般有两种,一种是传统的基于GB2312的Encode(Baidu.Yisou等使用),另一种是基于UTF-8的Encode(Google.Yahoo等使用). 本工具分别实现 ...

  8. Swift学习之常用UI的使用

    Swift学习之常用UI的使用 最近笔者在开始学习苹果最新的编程语言,因为笔者认为,苹果既然出了这门语言就绝对不会放弃,除非苹果倒闭了(当然这里知识一个玩笑). 所以在不久的将来,swift绝对是iO ...

  9. webapi 上传图片

    需求:上传学员信息时同时上传头像信息,学员基本信息表和科目表为一对多关系表(添加基本信息后添加通过科目信息).   测试: [HttpPost] public string Post() { if ( ...

  10. Java并发编程--线程封闭(Ad-hoc封闭 栈封闭 ThreadLocal)

    线程封闭实现好的并发是一件困难的事情,所以很多时候我们都想躲避并发.避免并发最简单的方法就是线程封闭.什么是线程封闭呢?就是把对象封装到一个线程里,只有这一个线程能看到此对象.那么这个对象就算不是线程 ...