本人收集的,挺有用的

1. 利用游标循环更新、删除MemberAccount表中的数据

  1. DECLARE My_Cursor CURSOR --定义游标
  2. FOR (SELECT * FROM dbo.MemberAccount) --查出需要的集合放到游标中
  3. OPEN My_Cursor; --打开游标
  4. FETCH NEXT FROM My_Cursor ; --读取第一行数据
  5. WHILE @@FETCH_STATUS = 0
  6. BEGIN
  7. --UPDATE dbo.MemberAccount SET UserName = UserName + 'A' WHERE CURRENT OF My_Cursor; --更新
  8. --DELETE FROM dbo.MemberAccount WHERE CURRENT OF My_Cursor; --删除
  9. FETCH NEXT FROM My_Cursor; --读取下一行数据
  10. END
  11. CLOSE My_Cursor; --关闭游标
  12. DEALLOCATE My_Cursor; --释放游标
  13. GO

2.利用游标循环更新MemberService表中的数据(更新每个用户所购买服务的时间)

  1. DECLARE @UserId varchar(50)
  2. DECLARE My_Cursor CURSOR --定义游标
  3. FOR (SELECT UserId FROM dbo.MemberAccount) --查出需要的集合放到游标中
  4. OPEN My_Cursor; --打开游标
  5. FETCH NEXT FROM My_Cursor INTO @UserId; --读取第一行数据(将MemberAccount表中的UserId放到@UserId变量中)
  6. WHILE @@FETCH_STATUS = 0
  7. BEGIN
  8. PRINT @UserId; --打印数据(打印MemberAccount表中的UserId)
  9. UPDATE dbo.MemberService SET ServiceTime = DATEADD(Month, 6, getdate()) WHERE UserId = @UserId; --更新数据
  10. FETCH NEXT FROM My_Cursor INTO @UserId; --读取下一行数据(将MemberAccount表中的UserId放到@UserId变量中)
  11. END
  12. CLOSE My_Cursor; --关闭游标
  13. DEALLOCATE My_Cursor; --释放游标
  14. GO

 sql 存储过程里面如何 对数据集循环

A. 在简单的游标中使用 FETCH

以下示例为 Person.Contact 表中姓氏以字母 B 开头的行声明了一个简单的游标,并使用 FETCH NEXT 逐个提取这些行。FETCH 语句以单行结果集形式返回在 DECLARE CURSOR 中指定的列的值。

  1. USE AdventureWorks
  2. GO
  3. DECLARE contact_cursor CURSOR FOR
  4. SELECT LastName FROM Person.Contact
  5. WHERE LastName LIKE 'B%'
  6. ORDER BY LastName
  7.  
  8. OPEN contact_cursor
  9.  
  10. -- Perform the first fetch.
  11. FETCH NEXT FROM contact_cursor
  12.  
  13. -- Check @@FETCH_STATUS to see if there are any more rows to fetch.
  14. WHILE @@FETCH_STATUS = 0
  15. BEGIN
  16. -- This is executed as long as the previous fetch succeeds.
  17. FETCH NEXT FROM contact_cursor
  18. END
  19.  
  20. CLOSE contact_cursor
  21. DEALLOCATE contact_cursor
  22. GO

B. 使用 FETCH 将值存入变量

以下示例与示例 A 相似,但 FETCH 语句的输出存储于局部变量而不是直接返回到客户端。PRINT 语句将变量组合成单一字符串并将其返回到客户端。

  1. USE AdventureWorks
  2. GO
  3. -- Declare the variables to store the values returned by FETCH.
  4. DECLARE @LastName varchar(50), @FirstName varchar(50)
  5.  
  6. DECLARE contact_cursor CURSOR FOR
  7. SELECT LastName, FirstName FROM Person.Contact
  8. WHERE LastName LIKE 'B%'
  9. ORDER BY LastName, FirstName
  10.  
  11. OPEN contact_cursor
  12.  
  13. -- Perform the first fetch and store the values in variables.
  14. -- Note: The variables are in the same order as the columns
  15. -- in the SELECT statement.
  16.  
  17. FETCH NEXT FROM contact_cursor
  18. INTO @LastName, @FirstName
  19.  
  20. -- Check @@FETCH_STATUS to see if there are any more rows to fetch.
  21. WHILE @@FETCH_STATUS = 0
  22. BEGIN
  23.  
  24. -- Concatenate and display the current values in the variables.
  25. PRINT 'Contact Name: ' + @FirstName + ' ' + @LastName
  26.  
  27. -- This is executed as long as the previous fetch succeeds.
  28. FETCH NEXT FROM contact_cursor
  29. INTO @LastName, @FirstName
  30. END
  31.  
  32. CLOSE contact_cursor
  33. DEALLOCATE contact_cursor
  34. GO

SQL存储过程+游标 循环批量()操作数据的更多相关文章

  1. sql存储过程中循环批量插入

    前几天有一个需求很头痛,部门是有上下级关系的,在给部门的经理赋予角色和权限的时候,通常我们都会认为假如经理A的部门是1,那么我给了他部门1 的管理权限,那么1的下级部门101,102,103 &quo ...

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

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

  3. SQL SERVER 游标循环读取表数据

    [cursor]游标:用于循环表行数据,类似指针 格式如下: declare tempIndex cursor for (select * from table) --定义游标 open tempIn ...

  4. SQL——存储过程实例 循环

    --循环 create or replace procedure p_xunhuan(input in number,output out number) is ); begin ; ..input ...

  5. [转]sql利用游标循环,遍历表循环结果集

    用 游标(Cursor) + While循环 的方法, 对Customers表中的CompanyName列进行遍历 ) declare pcurr cursor for select distinct ...

  6. oracle调用子存储过程+游标循环实例

    一,有子节点的部门的子节点的排序,调用子存储过程 CREATE OR REPLACE PROCEDURE "PRO_INIT_SORT" AS CURSOR cur_departm ...

  7. sql server 存储过程---游标的循环

    sqlserver中的循环遍历(普通循环和游标循环) sql 经常用到循环,下面介绍一下普通循环和游标循环 1.首先需要一个测试表数据Student

  8. SQLServer 命令批量删除数据库中指定表(游标循环删除)

    DECLARE @tablename VARCHAR(30),@sql VARCHAR(500)DECLARE cur_delete_table CURSOR READ_ONLY FORWARD_ON ...

  9. Oracle学习2 视图 索引 sql编程 游标 存储过程 存储函数 触发器

    ---视图 ---视图的概念:视图就是提供一个查询的窗口,来操作数据库中的数据,不存储数据,数据在表中. ---一个由查询语句定义的虚拟表. ---查询语句创建表 create table emp a ...

随机推荐

  1. Razor引擎的转换数据类型

    AsInt() 把字符串转换为整数. if (myString.IsInt()) IsInt() {myInt=myString.AsInt();} AsFloat() 把字符串转换为浮点数. if ...

  2. MongoDB-固定集合 capped collection 操作 介绍

    固定集合:capped collection 是性能出色的固定大小的集合,以LRU算法淘汰记录,自助维护集合中的对象的插入顺序,创建时预先制定大小,空间使用完,心对象取代旧的对象,保持最新的数据. 可 ...

  3. Memcached-1.4.4启动参数——手动设置chunk大小的上限

    最近在看memcached的源代码,源码包是memcached-1.4.22,一开始看memcached.c的main函数的时候发现了和1.2.8的不同之处. 可能在1.4.22版本之前就已经添加了这 ...

  4. EventSystem

    Unity5.0 EventSystem事件系统的详细说明 一.EventSystem对象的说明 当我们在场景中创建任一UI对象后,Hierarchy面板中都可以看到系统自动创建了对象EventSys ...

  5. CONTEXT MENU简介

    安卓中的上下文菜单是通过长按控件元素触发的,要注意的是每次都会触发onCreateContextMenu方法: main.xml <?xml version="1.0" en ...

  6. GFF 和 OGS 这两种触摸屏谁更好?

    我将从成本分析.制程分析.用户体验三个方面来回答楼主的问题.GFF的触摸屏从字面上翻译过来,就是一层玻璃cover,两层film构成的触摸屏.其中,玻璃cover作为整个手机的coverlens,从外 ...

  7. opencv 用户文档 错误更正 仿射变换

    今天在看opencv官方给出的仿射变换计算仿射变换矩阵的文档的时候,发现官方文档中有个很明显的错误,再次给大家提个醒. 官方文档连接: http://opencv.willowgarage.com/d ...

  8. BZOJ 1010 [HNOI2008]玩具装箱toy

    1010: [HNOI2008]玩具装箱toy Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 7184  Solved: 2724[Submit][St ...

  9. EDM(邮件营销)

    官冲拉手网CTO举了个EDM(邮件营销)的例子: 在做大数据分析应用之前,通过EDM带来的订单转化率很低.在采用大数据解决方案后,可以根据用户之前的浏览习惯猜测他的喜好和购买习惯,从而针对性的推送个性 ...

  10. (转载)python多行注释

    (转载)http://www.cnblogs.com/pylemon/archive/2011/05/23/2054090.html python本身不带多行注释,编辑时每行敲一个“#”相当的不方便, ...