SQL存储过程+游标 循环批量()操作数据
本人收集的,挺有用的
1. 利用游标循环更新、删除MemberAccount表中的数据
- DECLARE My_Cursor CURSOR --定义游标
- FOR (SELECT * FROM dbo.MemberAccount) --查出需要的集合放到游标中
- OPEN My_Cursor; --打开游标
- FETCH NEXT FROM My_Cursor ; --读取第一行数据
- WHILE @@FETCH_STATUS = 0
- BEGIN
- --UPDATE dbo.MemberAccount SET UserName = UserName + 'A' WHERE CURRENT OF My_Cursor; --更新
- --DELETE FROM dbo.MemberAccount WHERE CURRENT OF My_Cursor; --删除
- FETCH NEXT FROM My_Cursor; --读取下一行数据
- END
- CLOSE My_Cursor; --关闭游标
- DEALLOCATE My_Cursor; --释放游标
- GO
2.利用游标循环更新MemberService表中的数据(更新每个用户所购买服务的时间)
- DECLARE @UserId varchar(50)
- DECLARE My_Cursor CURSOR --定义游标
- FOR (SELECT UserId FROM dbo.MemberAccount) --查出需要的集合放到游标中
- OPEN My_Cursor; --打开游标
- FETCH NEXT FROM My_Cursor INTO @UserId; --读取第一行数据(将MemberAccount表中的UserId放到@UserId变量中)
- WHILE @@FETCH_STATUS = 0
- BEGIN
- PRINT @UserId; --打印数据(打印MemberAccount表中的UserId)
- UPDATE dbo.MemberService SET ServiceTime = DATEADD(Month, 6, getdate()) WHERE UserId = @UserId; --更新数据
- FETCH NEXT FROM My_Cursor INTO @UserId; --读取下一行数据(将MemberAccount表中的UserId放到@UserId变量中)
- END
- CLOSE My_Cursor; --关闭游标
- DEALLOCATE My_Cursor; --释放游标
- GO
sql 存储过程里面如何 对数据集循环
A. 在简单的游标中使用 FETCH
以下示例为 Person.Contact 表中姓氏以字母 B 开头的行声明了一个简单的游标,并使用 FETCH NEXT 逐个提取这些行。FETCH 语句以单行结果集形式返回在 DECLARE CURSOR 中指定的列的值。
- USE AdventureWorks
- GO
- DECLARE contact_cursor CURSOR FOR
- SELECT LastName FROM Person.Contact
- WHERE LastName LIKE 'B%'
- ORDER BY LastName
- OPEN contact_cursor
- -- Perform the first fetch.
- FETCH NEXT FROM contact_cursor
- -- Check @@FETCH_STATUS to see if there are any more rows to fetch.
- WHILE @@FETCH_STATUS = 0
- BEGIN
- -- This is executed as long as the previous fetch succeeds.
- FETCH NEXT FROM contact_cursor
- END
- CLOSE contact_cursor
- DEALLOCATE contact_cursor
- GO
B. 使用 FETCH 将值存入变量
以下示例与示例 A 相似,但 FETCH 语句的输出存储于局部变量而不是直接返回到客户端。PRINT 语句将变量组合成单一字符串并将其返回到客户端。
- USE AdventureWorks
- GO
- -- Declare the variables to store the values returned by FETCH.
- DECLARE @LastName varchar(50), @FirstName varchar(50)
- DECLARE contact_cursor CURSOR FOR
- SELECT LastName, FirstName FROM Person.Contact
- WHERE LastName LIKE 'B%'
- ORDER BY LastName, FirstName
- OPEN contact_cursor
- -- Perform the first fetch and store the values in variables.
- -- Note: The variables are in the same order as the columns
- -- in the SELECT statement.
- FETCH NEXT FROM contact_cursor
- INTO @LastName, @FirstName
- -- Check @@FETCH_STATUS to see if there are any more rows to fetch.
- WHILE @@FETCH_STATUS = 0
- BEGIN
- -- Concatenate and display the current values in the variables.
- PRINT 'Contact Name: ' + @FirstName + ' ' + @LastName
- -- This is executed as long as the previous fetch succeeds.
- FETCH NEXT FROM contact_cursor
- INTO @LastName, @FirstName
- END
- CLOSE contact_cursor
- DEALLOCATE contact_cursor
- GO
SQL存储过程+游标 循环批量()操作数据的更多相关文章
- sql存储过程中循环批量插入
前几天有一个需求很头痛,部门是有上下级关系的,在给部门的经理赋予角色和权限的时候,通常我们都会认为假如经理A的部门是1,那么我给了他部门1 的管理权限,那么1的下级部门101,102,103 &quo ...
- sql server 存储过程的(包含事务)方法里面,采用游标循环,批量删除(修改)数据
sqlserver 数据库 1.下面是完整的 在存储过程中 使用游标进行 循环删除的实例(包括存储过程中,事务的应用) 2.有问题的话,欢迎随时讨饶我,相信大家看下注释应该就能明白了,很简单的一个,小 ...
- SQL SERVER 游标循环读取表数据
[cursor]游标:用于循环表行数据,类似指针 格式如下: declare tempIndex cursor for (select * from table) --定义游标 open tempIn ...
- SQL——存储过程实例 循环
--循环 create or replace procedure p_xunhuan(input in number,output out number) is ); begin ; ..input ...
- [转]sql利用游标循环,遍历表循环结果集
用 游标(Cursor) + While循环 的方法, 对Customers表中的CompanyName列进行遍历 ) declare pcurr cursor for select distinct ...
- oracle调用子存储过程+游标循环实例
一,有子节点的部门的子节点的排序,调用子存储过程 CREATE OR REPLACE PROCEDURE "PRO_INIT_SORT" AS CURSOR cur_departm ...
- sql server 存储过程---游标的循环
sqlserver中的循环遍历(普通循环和游标循环) sql 经常用到循环,下面介绍一下普通循环和游标循环 1.首先需要一个测试表数据Student
- SQLServer 命令批量删除数据库中指定表(游标循环删除)
DECLARE @tablename VARCHAR(30),@sql VARCHAR(500)DECLARE cur_delete_table CURSOR READ_ONLY FORWARD_ON ...
- Oracle学习2 视图 索引 sql编程 游标 存储过程 存储函数 触发器
---视图 ---视图的概念:视图就是提供一个查询的窗口,来操作数据库中的数据,不存储数据,数据在表中. ---一个由查询语句定义的虚拟表. ---查询语句创建表 create table emp a ...
随机推荐
- Razor引擎的转换数据类型
AsInt() 把字符串转换为整数. if (myString.IsInt()) IsInt() {myInt=myString.AsInt();} AsFloat() 把字符串转换为浮点数. if ...
- MongoDB-固定集合 capped collection 操作 介绍
固定集合:capped collection 是性能出色的固定大小的集合,以LRU算法淘汰记录,自助维护集合中的对象的插入顺序,创建时预先制定大小,空间使用完,心对象取代旧的对象,保持最新的数据. 可 ...
- Memcached-1.4.4启动参数——手动设置chunk大小的上限
最近在看memcached的源代码,源码包是memcached-1.4.22,一开始看memcached.c的main函数的时候发现了和1.2.8的不同之处. 可能在1.4.22版本之前就已经添加了这 ...
- EventSystem
Unity5.0 EventSystem事件系统的详细说明 一.EventSystem对象的说明 当我们在场景中创建任一UI对象后,Hierarchy面板中都可以看到系统自动创建了对象EventSys ...
- CONTEXT MENU简介
安卓中的上下文菜单是通过长按控件元素触发的,要注意的是每次都会触发onCreateContextMenu方法: main.xml <?xml version="1.0" en ...
- GFF 和 OGS 这两种触摸屏谁更好?
我将从成本分析.制程分析.用户体验三个方面来回答楼主的问题.GFF的触摸屏从字面上翻译过来,就是一层玻璃cover,两层film构成的触摸屏.其中,玻璃cover作为整个手机的coverlens,从外 ...
- opencv 用户文档 错误更正 仿射变换
今天在看opencv官方给出的仿射变换计算仿射变换矩阵的文档的时候,发现官方文档中有个很明显的错误,再次给大家提个醒. 官方文档连接: http://opencv.willowgarage.com/d ...
- BZOJ 1010 [HNOI2008]玩具装箱toy
1010: [HNOI2008]玩具装箱toy Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 7184 Solved: 2724[Submit][St ...
- EDM(邮件营销)
官冲拉手网CTO举了个EDM(邮件营销)的例子: 在做大数据分析应用之前,通过EDM带来的订单转化率很低.在采用大数据解决方案后,可以根据用户之前的浏览习惯猜测他的喜好和购买习惯,从而针对性的推送个性 ...
- (转载)python多行注释
(转载)http://www.cnblogs.com/pylemon/archive/2011/05/23/2054090.html python本身不带多行注释,编辑时每行敲一个“#”相当的不方便, ...