SQL Server loop - how do I loop through a set of records

By using T-SQL and cursors like this :

DECLARE @MyCursor CURSOR;
DECLARE @MyField YourFieldDataType;
BEGIN
SET @MyCursor = CURSOR FOR
select top 1000 YourField from dbo.table
where StatusID = 7 OPEN @MyCursor
FETCH NEXT FROM @MyCursor
INTO @MyField WHILE @@FETCH_STATUS = 0
BEGIN
/*
YOUR ALGORITHM GOES HERE
*/
FETCH NEXT FROM @MyCursor
INTO @MyField
END; CLOSE @MyCursor ;
DEALLOCATE @MyCursor;
END;

https://stackoverflow.com/questions/28506747/sql-loop-through-each-row-in-a-table

Based on the caption of your question. This is the way I loop through each row of a table using a variable of type TABLE:

DECLARE
@counter INT = 1,
@max INT = 0 -- Declare a variable of type TABLE. It will be used as a temporary table.
DECLARE @myTable TABLE (
[Id] int identity,
[Column1] nvarchar(max),
[Column2] nvarchar(100)
) -- Insert your required data in the variable of type TABLE
INSERT INTO @myTable
SELECT Column1, Column2
FROM [dbo].[YOUR_DATABASE_TABLE] -- Initialize the @max variable. We'll use thie variable in the next WHILE loop.
SELECT @max = COUNT(ID) FROM @myTable -- Loop
WHILE @counter <= @max
BEGIN -- Do whatever you want with each row in your table variable filtering by the Id column
SELECT Column1, Column2
FROM @myTable
WHERE Id = @counter SET @counter = @counter + 1
END

实例

DECLARE @TempTable TABLE
(
RowNumber INT ,
MemberId INT ,
Birthday DATETIME
);
INSERT INTO @TempTable ( RowNumber ,
MemberId ,
Birthday )
SELECT ROW_NUMBER() OVER ( ORDER BY MemberID ASC ) ,
MemberID ,
Birthday
FROM dbo.vie_mem_16
WHERE Birthday IS NULL;
SELECT *
FROM @TempTable; DECLARE @CurrentDate DATETIME = '';
DECLARE @CurrentRowNumber INT = 1;
DECLARE @MaxRowNumber INT;
DECLARE @TempMemberId INT;
SELECT @MaxRowNumber = MAX(RowNumber)
FROM @TempTable; WHILE ( @CurrentRowNumber <= @MaxRowNumber )
BEGIN
SELECT @TempMemberId = MemberId
FROM @TempTable
WHERE RowNumber = @CurrentRowNumber; UPDATE dbo.tbm_mem_Member_Beneficiary
SET Birthday = @CurrentDate
WHERE MemberID = @TempMemberId; SET @CurrentRowNumber = @CurrentRowNumber + 1;
SET @CurrentDate = DATEADD(DAY, 1, @CurrentDate);
END;

SQL Server loop - how do I loop through a set of records的更多相关文章

  1. SQL Server Cpu 100% 的常见原因及优化

    SQL Server Cpu 100% 的情况并不太常见,一般引起 SQL Server 产生性能问题的,都是 阻塞.连接数.IO 磁盘等.所以,一般SQL Server 的使用率都是比较低的.但是, ...

  2. SQL Server的三种物理连接之Loop Join(一)

    Sql Server有三种物理连接Loop Join,Merge Join,Hash Join, 当表之间连接的时候会选择其中之一,不同的连接产生的性能不同,理解这三种物理连接对性能调优有很大帮助. ...

  3. 浅谈SQL Server中的三种物理连接操作(HASH JOIN MERGE JOIN NESTED LOOP)

    简介 在SQL Server中,我们所常见的表与表之间的Inner Join,Outer Join都会被执行引擎根据所选的列,数据上是否有索引,所选数据的选择性转化为Loop Join,Merge J ...

  4. SQL Server nested loop join 效率试验

    从很多网页上都看到,SQL Server有三种Join的算法, nested loop join, merge join, hash join. 其中最常用的就是nested loop join. 在 ...

  5. 浅谈SQL Server中的三种物理连接操作(Nested Loop Join、Merge Join、Hash Join)

    简介 在SQL Server中,我们所常见的表与表之间的Inner Join,Outer Join都会被执行引擎根据所选的列,数据上是否有索引,所选数据的选择性转化为Loop Join,Merge J ...

  6. SQL Server中TOP子句可能导致的问题以及解决办法

    简介      在SQL Server中,针对复杂查询使用TOP子句可能会出现对性能的影响,这种影响可能是好的影响,也可能是坏的影响,针对不同的情况有不同的可能性.      关系数据库中SQL语句只 ...

  7. SQL Server SQL性能优化之--通过拆分SQL提高执行效率,以及性能高低背后的原因

    复杂SQL拆分优化 拆分SQL是性能优化一种非常有效的方法之一, 具体就是将复杂的SQL按照一定的逻辑逐步分解成简单的SQL,借助临时表,最后执行一个等价的逻辑,已达到高效执行的目的 一直想写一遍通过 ...

  8. vbs连接sql server及写文件操作

    此段代码是连接SQL SERVER的 代码内connMMSQL的参数要根据实际情况传入 Function connMMSQL(ip,user,pwd,database,strsql) Dim conn ...

  9. SQL Server 执行计划利用统计信息对数据行的预估原理以及SQL Server 2014中预估策略的改变

    前提  本文仅讨论SQL Server查询时, 对于非复合统计信息,也即每个字段的统计信息只包含当前列的数据分布的情况下, 在用多个字段进行组合查询的时候,如何根据统计信息去预估行数的. 利用不同字段 ...

随机推荐

  1. 简单介绍export default,module.exports与import,require的区别联系

    他们都是成对使用的,不能乱用: module.exports 和 exports是属于CommonJS模块规范,对应---> require属于CommonJS模块规范 export 和 exp ...

  2. Solr.NET快速入门(八)【多核多实例,映射验证】

    多核/多实例 本页介绍如何配置SolrNet访问(读/写)多个Solr内核或实例. 它假定您知道Solr内核是什么,如何在SolrNet外部配置和使用它们. 此页面不涵盖CoreAdminHandle ...

  3. It Started With A Kiss

  4. 洛谷P2181 对角线(组合数)

    题目描述 对于一个N个定点的凸多边形,他的任何三条对角线都不会交于一点.请求楚图形中对角线交点的个数. 例如,6边形: 输入输出格式 输入格式: 第一行一个n,代表边数. 输出格式: 第一行输出交点数 ...

  5. Css float 盒子模型 position

    属性: float 浮动 浮动的内容用div包起来,给div设置宽高 clear 清除浮动. box-sizing 标准模式下的盒模型 content-box:(默认属性) padding和borde ...

  6. Java集合(一)HashMap

    HashMap 特点: HashMap的key和value都允许为空,无序的,且非线程安全的 数据结构: HashMap底层是一个数组,数组的每一项又都是链表,即数据和链表的结合体.当新建一个Hash ...

  7. 用python 4行搞定基数排序

    from random import randint def main(): A = [randint(1, 99999999) for _ in xrange(9999)] for k in xra ...

  8. DDoS攻击与防范策略

    DDoS(Distributed Denial of Service,分布式拒绝服务)攻击的主要目的是让指定目标无法提供正常服务,甚至从互联网上消失,是目前最强大.最难防御的攻击之一. 按照发起的方式 ...

  9. 00--C++牛人的博客

    那些C++牛人的博客 这篇文章来自转载,转载的网址找不到了,   如果有人知道,可以在下面评论,   非常感谢,更感谢原作者. 现整理收集C++世界里那些“牛人”的个人博客.凡三类:一是令人高山仰止的 ...

  10. Airtest多设备跑

    一.   一个脚本对应一台设备 核心点:组织运行命令:将组织好的命令传到pool进程池(注意:是进程池,不是线程池,python的线程池不是同步执行,是按序执行) 以下不需要看,为私人项目备份目的. ...