下面是个小实验可以自己试试

-- 先创建一个表 实验用
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 循环中定义变量一定要小心,否则你的数据就是错误的的更多相关文章

  1. 【Javascript】: for循环中定义的变量在for循环体外也有效

    for循环中定义的变量在for循环体外也有效 <script> (function(){ var a = 111; for(var i=0;i<5;i++){ var carl = ...

  2. 【SQL】小心在循环中声明变量——浅析SQL变量作用域

    本文适用:T-SQL(SQL Server) 先看这个语句: --跑3圈 BEGIN --每圈都定义一个表变量,并插入一行 DECLARE @t TABLE(Col INT PRIMARY KEY) ...

  3. js for 循环中的 变量问题。

    今日处理项目中的一个循环,本来就是一个小小的for循环,后来发现该段程序出现了问题,仔细检查代码没有发现其中的错误.无奈只好叫来了老大帮忙.通过在模版中断点调试(该方式只能自己写debugger断点) ...

  4. case中定义变量

    1.c语言switch/case中定义变量   case 0: int b = 0 ; printf("0");break; case 1: printf("1" ...

  5. (转载)JavaScript中定义变量

    (转载)http://blog.163.com/xuxiaoqianhz@126/blog/static/165190577201061594421870/ JavaScript中定义变量有两种方式: ...

  6. JavaScript 中定义变量时有无var声明的区别

    关于JavaScript中定义变量时有无var声明的区别 var a=5; //正确 a=5; //正确 在javascript中,以上两种方法都是定义变量的正确方法.微软的Script56.CHM中 ...

  7. 不要在.h文件中定义变量

    今天在头文件.h中初始化了一个数组和函数,在编译的时候提示这个数组和函数重新定义了,检查后发现,犯了一个致命的错误,在头文件中定义变量... 以下引用别人的一篇说明,警示自己. C语言作为一种结构化的 ...

  8. css中定义变量

    css中定义变量 定义变量可分多种情况: 1.定义全局变量 :root { --borderColor: #ccc;} 2.定义某元素下的变量 .look{ --borderColor: #ccc;} ...

  9. [Linux][C][gcc][tips] 在头文件中定义变量引发的讨论

    概述 本人的原创文章,最先发表在github-Dramalife-note中.转载请注明出处. Define variable(s) in header file referenced by mult ...

  10. ansible中定义变量的若干方法

    Ansible支持十几种定义变量的方式 根据优先级排序的定义方式: Inventory变量 Host Facts变量 Playbook变量 Playbook提示变量 变量文件 命令行变量 1.Inve ...

随机推荐

  1. Django Web应用开发实战第一章

    一.常见域名后缀 .com:商业性的机构或公司. .net:从事Internet相关的网络服务的机构或公司. .org:非营利的组织.团体. .gov:政府部门. .cn:中国国内域名. .com.c ...

  2. 记人生第一次DIY装机之旅

    一.调研 想装一台个人工作站很久了,原因是大学自用的笔记本总是在使用过程中过热关机,导致做一些CPU负载较高的工作时总是中断而无法连贯进行.考虑到目前手头还有一个Surface 3在使用,再买一个笔记 ...

  3. 【语义分割专栏】:U-net实战篇(附上完整可运行的代码pytorch)

    目录 前言 U-net全流程代码 模型搭建(model) 数据处理(dataloader) 评价指标(metric) 训练流程(train) 模型测试(test) 效果图 结语 前言 U-net原理篇 ...

  4. 重新认识Clientset

    重新认识Clientset 1.介绍 Clientset 是调用 Kubernetes 资源对象最常用的客户端,可以操作所有的资源对象. 那么在 Clientset 中使如何用这些资源的呢? 因为在 ...

  5. 资深育儿专家智能体,AI都已经涉及这块了?

    本文由 ChatMoney团队出品 介绍说明 在育儿的道路上,您是否常常感到迷茫和无助?面对孩子的成长问题.教育难题以及各种突发状况,您是否渴望有一位专业的导师为您指引方向?现在,让资深育儿专家智能体 ...

  6. 如何在FastAPI中打造坚不可摧的安全防线?

    title: 如何在FastAPI中打造坚不可摧的安全防线? date: 2025/06/20 11:33:15 updated: 2025/06/20 11:33:15 author: cmdrag ...

  7. AI大模型完全本地化部署指南——从零硬件开始

    本文将从基础硬件购置开始讲起,真正意义上从零开始,最终通过Ollama.LangChain.DeepSeek的一系列交互,输出本地大模型的第一声啼鸣,带你走进另一片广阔的世界.update:2025- ...

  8. .net一般应用处理程序

    .net一般应用处理程序 public void ProcessRequest (HttpContext context) { context.Response.ContentType = " ...

  9. tigervnc配置

    简介 使用vnc 访问 服务器 下载链接 https://bintray.com/tigervnc/stable/tigervnc/1.10.1 简易使用命令 x0vncserver -rfbport ...

  10. 小心误关了NAS服务器!修改Linux的电源键功能

    前言 事情是这样的 今天想用NAS上的服务突然发现NAS离线了 我看了下原来是关机了 很奇怪,这几天也没断电啊- 我又去分析了系统日志 注意到了关机前的这段日志 Jul 13 23:24:33 pve ...