对Sql进行类似For循环处理
2010-03-10 17:25
260 查看
今天遇到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' --每隔一秒再执行 可用参数变量替换
Update Demo_TestTable set CreatDate=GETDATE() where Creater =(
Select Creater from (
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
) TableA
where TableA.RowID=@tagint
)
set @tagint=@tagint+1
end
end
当然今天出现的情况因其特殊性有更简单的写法,但此法具体一般性. @tagint即类似于For循环中的i,通过在查询时设置Row_Number()行号来遍历得到每1个需要Update的ID,进而进行相关的处理
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' --每隔一秒再执行 可用参数变量替换
Update Demo_TestTable set CreatDate=GETDATE() where Creater =(
Select Creater from (
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
) TableA
where TableA.RowID=@tagint
)
set @tagint=@tagint+1
end
end
当然今天出现的情况因其特殊性有更简单的写法,但此法具体一般性. @tagint即类似于For循环中的i,通过在查询时设置Row_Number()行号来遍历得到每1个需要Update的ID,进而进行相关的处理
相关文章推荐
- 关于For循环中进行异步操作索引不正确的处理方式
- SQL中的循环语句_类似FOR循环
- T-SQL是否有循环语句?类似C语言的for?如何查看有哪些用户连接到服务器上?如何强制其退出?
- 一种利用线程池进行for循环处理的思想
- 处理:SqlServer FOR XML 无法对节点 'NoName' 的数据进行序列化,因为它包含在 XML 中不允许出现的字符(0x0000)。
- Oracle PL/SQL 程序设计读书笔记 - 第5章 用循环进行迭代处理
- 利用for语句 + switch语句进行中奖判断和循环
- sql,用COALESCE,NULLIF对空值和null值进行处理
- 存储过程错误异常处理例子 --> DECLARE EXIT HANDLER FOR SQLEXCEPTION (转)
- 用Java控制SQL进行一些简单的处理
- 用Java控制SQL进行一些简单的处理(改进版)
- 能不能在FOR循环中执行SQL?
- 批处理问题:SET 命令在 FOR 循环中失效 / SET 环境变量生存域/作用域
- 写了一个PHP版本的MONGODB语法解析器,可以通过类似SQL的语法来进行MONGODB的查询,不知道有人需要不,分享一下吧
- 如何使用Transact-SQL进行事务处理[示例]
- for循环中进行Promise异步操作的问题总结
- 对json数据进行类似sql查询
- sql 循环处理查询到的结果集
- Oracle PL/SQL中的循环处理(sql for循环)
- Oracle PL/SQL中的循环处理(sql for循环)