sqlserver 循环中定义变量一定要小心,否则你的数据就是错误的
下面是个小实验可以自己试试
-- 先创建一个表 实验用
create table test_5(
id int identity(1,1),
na varchar(50),
)
-- 将数据插入表中,插入null的目的就是为了,后续重新问题
insert into test_5(na)
select 'a' union all
select null union all
select 'c' union all
select 'd' union all
select 'e' union all
select null
--- 下面是循环的小示例
declare @count int ;
select @count = count(*) from test_5
while @count>0
begin
declare @name varchar(50)
select top 1 @name = na from test_5 where na is not null
select @count as 执行次数, @name as na
delete from test_5 where na =@name
set @count =@count -1
end
执行结果如下:
-- 是不是与你想的不一样,这里他跟我们用java或c#中写的不一样的,我们本能的人为,循环中的变量每次都初始化,实际上不然;
实际上循环中的声明只声明了一次,如果想不出现问题,那就 则声明的同时给他赋一个初始值;SQL的变量作用域是【批】,这一点在MSDN中有说。
所以说 sql中 声明语句比较特殊,它并不依赖位置,系统“见到”就算数,所以不管变量在多深的语句块中声明,它在本批接下来的语句中都是有效的。所以我们在使用的时候,尤其是循环中使用变量一定要做好处理;
sqlserver 循环中定义变量一定要小心,否则你的数据就是错误的的更多相关文章
- 【Javascript】: for循环中定义的变量在for循环体外也有效
for循环中定义的变量在for循环体外也有效 <script> (function(){ var a = 111; for(var i=0;i<5;i++){ var carl = ...
- 【SQL】小心在循环中声明变量——浅析SQL变量作用域
本文适用:T-SQL(SQL Server) 先看这个语句: --跑3圈 BEGIN --每圈都定义一个表变量,并插入一行 DECLARE @t TABLE(Col INT PRIMARY KEY) ...
- js for 循环中的 变量问题。
今日处理项目中的一个循环,本来就是一个小小的for循环,后来发现该段程序出现了问题,仔细检查代码没有发现其中的错误.无奈只好叫来了老大帮忙.通过在模版中断点调试(该方式只能自己写debugger断点) ...
- case中定义变量
1.c语言switch/case中定义变量 case 0: int b = 0 ; printf("0");break; case 1: printf("1" ...
- (转载)JavaScript中定义变量
(转载)http://blog.163.com/xuxiaoqianhz@126/blog/static/165190577201061594421870/ JavaScript中定义变量有两种方式: ...
- JavaScript 中定义变量时有无var声明的区别
关于JavaScript中定义变量时有无var声明的区别 var a=5; //正确 a=5; //正确 在javascript中,以上两种方法都是定义变量的正确方法.微软的Script56.CHM中 ...
- 不要在.h文件中定义变量
今天在头文件.h中初始化了一个数组和函数,在编译的时候提示这个数组和函数重新定义了,检查后发现,犯了一个致命的错误,在头文件中定义变量... 以下引用别人的一篇说明,警示自己. C语言作为一种结构化的 ...
- css中定义变量
css中定义变量 定义变量可分多种情况: 1.定义全局变量 :root { --borderColor: #ccc;} 2.定义某元素下的变量 .look{ --borderColor: #ccc;} ...
- [Linux][C][gcc][tips] 在头文件中定义变量引发的讨论
概述 本人的原创文章,最先发表在github-Dramalife-note中.转载请注明出处. Define variable(s) in header file referenced by mult ...
- ansible中定义变量的若干方法
Ansible支持十几种定义变量的方式 根据优先级排序的定义方式: Inventory变量 Host Facts变量 Playbook变量 Playbook提示变量 变量文件 命令行变量 1.Inve ...
随机推荐
- manim边做边学--隐函数图像
在数学可视化中,显函数$ y=f(x) \(相对容易处理,但**隐函数**\) F(x,y)=0 $的绘制则更具挑战性. Manim库中的ImplicitFunction类专门用于解决这个问题,它能够 ...
- SSH实现服务器之间免密登录
1.介绍 SSH(Secure Shell)是一种用于计算机之间安全远程登录和其他网络服务的协议,它通过加密通信来确保在不安全的网络中也能安全地传输数据.SSH可以用于登录远程主机.执行命令和管理远程 ...
- 2025年最值得关注的效率神器排行榜,HR和运营人都在偷偷用
在职场节奏越来越快的当下,效率工具已经成为打工人提升工作表现的"刚需".无论你是HR.运营.市场.产品经理,还是独立工作者,选对一款好用的效率神器,往往能省下大量时间.提升工作成就 ...
- HyperWorks使用六面体和三棱柱单元进行实体网格剖分
本节将演示如何使用 solid map 功能对一个复杂的几何实体进行网格剖分.剖分的思路是:首先对该实体进行适当的切割,以使其各个部分均处于 mappable 的状态:然后分别对各个子块进行 soli ...
- Spring Boot中最常用的 100 个注解
大家好,我是晓凡. 以下是 Spring Boot 中最常用的 100 个注解(按功能分类整理),适用于配置.控制层.数据访问.安全.测试等常见场景: 一.核心注解(Core Annotations) ...
- MCPmarket.cn最全最好用的中文MCP平台:推出全新MCP教程《MCP从0到1》第1课:MCP关键概念与术语详解
MCPmarket.cn 正式推出全新教程<MCP 从 0 到 1>,面向AI爱好者和开发者朋友,零基础友好,帮你系统掌握 MCP(Model Context Protocol,模型上下文 ...
- 前端开发系列059-网络篇之网络基础知识和HTTP协议
一.网络编程基本概念 1.1 客户端和服务器的基本概念 客户端(Client)能从服务器获取资源为客户提供服务的程序(设备). 服务器(Server)为客户端提供服务.提供数据.提供资源的机器. 说明 ...
- win10 多用户登陆
win10 多用户登陆 一般的直接下载就可以用了. 核心参考链接github 支持 1903 支持最新版本可以需要这个 1903支持项参考页面 上述页面的下载文件页面1903支持页面 关于上述链接下载 ...
- 数据迁移新技能,MongoDB轻松同步至ClickHouse
在当今数据驱动的世界中,企业的成功依赖于对数据的高效管理和精准分析.数据迁移是实现这些目标的关键环节,而选择合适的工具可以让这项工作变得更加轻松和高效.ETLCloud 是一款创新的 ETL(提取.转 ...
- 最好的Transformer讲解:The Illustrated Transformer + The Annotated Transformer
The Illustrated Transformer https://jalammar.github.io/illustrated-transformer/ The Annotated Transf ...