• 对Sql进行类似For循环处理


         今天遇到1个很是无语的问题。。。由于开发人员的版本更新导致用户在今天所开之单据的CreatDate都变成了yyyy-MM-dd格式,原本应该为
    yyyy-MM-dd hh:mm:ss:fff格式。于是,只能手动更新数据了 -_-!

    代码
     1 declare @itemnumber int --定义需要循环的次数
     2 declare @tagint int --定义标志字段,用于结束循环
     3 set @tagint=1
     4 select @itemnumber = count(distinct Creater) from Demo_TestTable where isnull(Creater,'')<>'' And 
       DATEDIFF(DAY,CreatDate,GETDATE())<1
     5   if(@itemnumber>0)
     6   begin
     7     while @tagint<=@itemnumber
     8         begin
     9             waitfor delay '00:00:01' --每隔一秒再执行 可用参数变量替换
    10             Update Demo_TestTable set CreatDate=GETDATE() where Creater =(
    11             Select Creater from (
    12                 select Creater,ROW_NUMBER() over(order by Creater) as RowID from Demo_TestTable where 
                isnull(Creater,'')<>'' And DATEDIFF(DAY,CreatDate,GETDATE())<1 group by Creater
    13              ) TableA
    14              where  TableA.RowID=@tagint
    15              )
    16              set @tagint=@tagint+1
    17         end
    18   end

        当然今天出现的情况因其特殊性有更简单的写法,但此法具体一般性. @tagint即类似于For循环中的i,通过在查询时设置Row_Number()行号来遍历得到每1个需要Update的ID,进而进行相关的处理

  • 相关阅读:
    java 构造函数内部的多态方法 完全剖析
    Android 高仿微信 获取最近刚刚拍照的缩略图 功能实现
    Android 高仿豌豆荚 一键安装app 功能 实现
    Android Bitmap实战技巧
    Android 异步加载神器Loader全解析
    Android 开源项目PhotoView源码分析
    细数Android开源项目中那些频繁使用的并发库中的类
    js 压缩图片 H5
    上传从剪贴板复制的图片
    moble 设备多指手势识别 (tap , double_tap , pinch)
  • 原文地址:https://www.cnblogs.com/maoniu602/p/1682780.html
Copyright © 2020-2023  润新知