专栏首页浩CodingSQL Server for循环用法

SQL Server for循环用法

最近需要修改一个项目,涉及到SqlServer数据库知识,整理出来和大家分享一下,老规矩,先贴示例,最后是语法:

准备工作,模拟2012-2018年订单数据:

先从tb_Detail订单详细表中找出属于2012年的数据(备注有,故意模拟的),查出OrderID:

select OrderID from tb_Detail where Remark = "2012年数据用";

再通过OrderID修改tb_OrderInfo商品订单表中的各个年度:

update tb_OrderInfo set OrderDate="2012-05-31 11:27:37.123" where OrderID in (select OrderID from tb_Detail where Remark = "2012年数据用");

查看了下整个2012年数据没问题(select OrderID from tb_OrderInfo where YEAR(OrderDate) =2012;)可以考虑使用for循环了:

declare @min int

declare @max int

set @min=2013

set @max=2019

while @min<@max

begin

update tb_OrderInfo set OrderDate=cast(@min as varchar(10))+"-05-31 11:27:37.123" where OrderID in (select OrderID from tb_Detail where Remark = cast(@min as varchar(10))+"年数据用")

set @min=@min+1

end

注意for循环中的cast(@min as varchar(10))字段,这是因为我们声明的@min变量是int类型的,而后面的“年数据用”和我们要查询的Remark字段都是vachar类型的,所以需要把int类型转为varchar,不然会出现如下错误:

另外,如果用命令行输入的话,注意复制粘贴SQL语句时候的换行符问题。

如图执行for循环:

最后测试数据,通过,噢耶\(^o^)/!!

for循环语法介绍:

-- ╔════════╗

-- =============================== ║ if语句使用示例 ║

-- ╚════════╝

declare @a int

set @a=12

if @a>100

begin

print @a

end

else

begin

print 'no'

end

-- ╔══════════╗

-- =============================== ║ while语句使用示例 ║

-- ╚══════════╝

declare @i int

set @i=1

while @i<30

begin

insert into test (userid) values(@i)

set @i=@i+1

end

-- 设置重复执行 SQL 语句或语句块的条件。只要指定的条件为真,就重复执行语句。可以使用 BREAK 和 CONTINUE 关键字在循环内部控制 WHILE 循环中语句的执行。 本条为以前从网上查找获取!

-- ╔════════╗

-- ================================ ║ 临时表和try ║

-- ╚════════╝

-- 增加临时表

select * into #csj_temp from csj

-- 删除临时表 用到try

begin try -- 检测代码开始

drop table #csj_temp

end try

begin catch -- 错误开始

end catch

-- ╔═════════╗

-- =============================== ║ 游标循环读记录 ║

-- ╚═════════╝

declare @temp_temp int

--declare @Cur_Name

--@Cur_Name="aaa"

--------------------------------- 创建游标 --Local(本地游标)

DECLARE aaa CURSOR for select House_Id from House_House where Deleted=0 or deleted is null

----------------------------------- 打开游标

Open aaa

----------------------------------- 遍历和获取游标

fetch next from aaa into @temp_temp

--print @temp_temp

while @@fetch_status=0

begin

--做你要做的事

select * from House_monthEnd where House_Id=@temp_temp

fetch next from aaa into @temp_temp -- 取值赋给变量

--

end

----------------------------------- 关闭游标

Close aaa

----------------------------------- 删除游标

Deallocate aaa

--

参考文章:

for循环的实现:

https://zhidao.baidu.com/question/72824226.html

https://zhidao.baidu.com/question/82332450.html

https://www.cnblogs.com/xielong/p/5941595.html

SqlServer类型拼接问题:

https://zhidao.baidu.com/question/2073884979869176588.html

最后感想:

也是最近做项目用得上了SqlServer的知识,想到大学时候数据库课老师讲过这个,考试还考了for循环呢,哈哈哈,但是现在已经全忘了,翻翻以前的课件,查查资料还是能拿起来的,感谢大学所有老师!

本文分享自微信公众号 - 浩Coding(gh_c4a2e63d2ca7),作者:浩

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-12-25

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • ssh免密码登录

    我们在用SSH登陆服务器时候,总是要输入密码,其实我们可以通过上传秘钥的方法来实现免密登陆,下面是教程:

    浩Coding
  • HTML5骇客帝国文字矩阵效果——简单易学

    大家是不是经常在电影中看到如图的文字特效呢,其实我们也可以做,而且原理非常简单,不想多看的小伙伴呢,也可以直接拿走代码,哈哈哈。

    浩Coding
  • 解决oracle服务占用内存过高的问题

    通常我们在自己电脑上搭建项目环境时,都免不了要安装Oracle。不管你硬件多强悍,都会发现,Oracle服务一旦启用,内存立马吃紧。笔者内存8G,启动一个VS,...

    浩Coding
  • OpenCV中的透视变换介绍

    透视变换原理 透视变换是将图像从一个视平面投影到另外一个视平面的过程,所以透视变换也被称为投影映射(Projection Mapping)。我们知道在图像的仿射...

    OpenCV学堂
  • 2020CV秋招求职的若干思考

    知乎上对算法岗的提问逐渐从“饱和”、““神仙打架”、“诸神黄昏”到“灰飞烟灭”,甚至预订了明年的“车毁人亡”(https://www.zhihu.com/que...

    点云PCL博主
  • 可微分的「OpenCV」:这是基于PyTorch的可微计算机视觉库

    如何打造一个可微分的 OpenCV?如何将图像处理嵌入到训练流程中?你需要 Kornia 这个开源可微的计算机视觉库。

    机器之心
  • 可微分的「OpenCV」:这是基于PyTorch的可微计算机视觉库

    目前最经典的图像处理库差不多就是 OpenCV 了,它从最经典的图像算法到非常前沿的 DL 预训练模型囊括了 CV 的很多方面。但现在有一个问题,OpenCV ...

    小白学视觉
  • iOS传感器:App前后台切换后,获取敏感信息使用touch ID进行校验1. 指纹识别传感器的用法介绍2. Touch ID指纹识别的代码实现3. 判断系统版本号的几种方法4. App从后台到前台,

    stanbai
  • 关于Arduino Nano你没有经历过的坑

    大部分玩 Arduino 的朋友,都还是从 UNO板子上开始玩,而这些板子的共性,就是都是用了 DIP(直插)28 脚封转的主芯片。而转为 Nano 的话,其...

    单片机技术宅
  • BeautifulSoup库

    注意:如果是html的父标签就是他自己,soup本身也是种特殊的标签的他的父标签是空

    小小咸鱼YwY

扫码关注云+社区

领取腾讯云代金券