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. Hashlib 用户名密码加密 2.0

    #!/usr/bin/env python# -*- coding: utf-8 -*-# @Time : 2018/7/10 0008 11:44# @Author : Anthony.Waa# @ ...

  2. Struts2的学习链接

    ---- Struts2的学习途径 (downpour) http://www.iteye.com/wiki/struts2/1306-struts2-way-of-learning ---- Str ...

  3. 洛谷P4413 [COCI2006-2007#2] R2(可持久化平衡树维护NTT)

    题意翻译 设S=(R1+R2)/2,给定R1与S (-1000<=R1,S<=1000)(−1000<=R1,S<=1000) ,求R2. 感谢@Xeonacid 提供的翻译 ...

  4. vue-cli3+typescript+router

    vue基于类的写法,和基于对象的写法并不一致.使用vue-cli3创建的项目,src目录下的文件结构并没有多大区别,store.router.app.view.components.aeests该有的 ...

  5. 8) 十分钟学会android--Activity的生命周期之停止与重启

    恰当的停止与重启我们的activity是很重要的,在activity生命周期中,他们能确保用户感知到程序的存在并不会丢失他们的进度.在下面一些关键的场景中会涉及到停止与重启: 用户打开最近使用app的 ...

  6. Sql Server 连接池

    在看缓存的一篇文章中,看到连接池的三个字,来充充电. 原文连接 这篇讲了关键字 其实我们一直在使用SqlServer的连接池.在连接字符串中,Pooling为是否启用连接池,默认值为true,表示启用 ...

  7. (转)基于MVC4+EasyUI的Web开发框架经验总结(6)--在页面中应用下拉列表的处理

    http://www.cnblogs.com/wuhuacong/p/3840321.html 在很多Web界面中,我们都可以看到很多下拉列表的元素,有些是固定的,有些是动态的:有些是字典内容,有些是 ...

  8. 图片无损放大工具PhotoZoom如何进行打印设置

    我们使用PhotoZoom对照片进行无失真放大后,想将照片给打印出来需要设置一些常规参数时.那么这些参数我们该从哪里设置,怎么设置呢? PhotoZoom下载:pan.baidu.com/s/1cXb ...

  9. javaee 文件的读取

    package Shurushucu; import java.io.FileNotFoundException; import java.io.FileOutputStream; import ja ...

  10. Linux常用命令学习随笔

    1.ls命令 就是list的缩写,通过ls 命令不仅可以查看linux文件夹包含的文件,而且可以查看文件权限(包括目录.文件夹.文件权限)查看目录信息等等 常用参数搭配: ls -a 列出目录所有文 ...