批处理

应用程序向SqlServer发送的一组命令,Sql Server会将其编译成一个可执行单元,称为执行计划,执行计划中的语句每次执行一条。

每个不同的批处理用GO命令分割。GO命令不是SQL语句,它是告诉SSMS将GO之前的语句作为批处理一起发送给数据库引擎。

注意:GO命令不能和其它SQL命令写在同一行上!局部变量的作用域限定在一个批处理中,不可以在GO后面引用,否则报错!

另外,一次提交多个批处理时,一个批处理出错,只影响其本身继续执行,而不会影响下一个批处理的执行。

语句块

T-SQL中使用BEGIN……END来指定语句块。

注意:语句块中声明的变量,其作用域是在整个批处理中,也就是说,在BEGIN……END中定义的变量,可以在END之外进行访问,直到遇见GO。

BEGINdeclare @str nvarchar(50)set @str='abc'print(@str)
END
print(@str)        --此处可以正常访问
go
print(@str)        --此处报错:必须声明标量变量 "@str"。

条件语句

IF…ELSE…语句

以下代码纯属演示:

declare @num int
set @num=3if(@num=1)begin--这里可以写多行代码--如果是一行,可以省略begin...endprint 'num=1'end
else if(@num=2)--此处只有一行代码,省略begin...endprint 'num=2'
elseprint 'num不等于1,也不等于2'

case…when…then…end语句

貌似只能用在select语句中?两种用法:

第一种:

declare @num int
set @num=3
select case @numwhen 1 then 'num=1'when 2 then 'num=2'else 'num不等于1,也不等于2'end as col

第二种:

declare @num int
set @num=3
select case    --case后面不写表达式,判断表达式写在when后面when @num=1 then 'num=1'when @num=2 then 'num=2'else 'num不等于1,也不等于2'end as col

貌似只能用在select语句中?我试着把case…when…then…end脱离select使用,但没有成功……

循环语句

while循环

直接来一个简单的例子吧:

declare @num int
set @num=3
while(@num>0)    --括号貌似也不是必需的beginprint @numset @num=@num-1end
go

使用goto语句实现循环

goto语句其实是用来跳转的,据说乱用goto会把代码变得比意大利面更乱,因此许多编程语言中的goto基本都不怎么用。

在T-SQL中,我们可以使用goto来实现循环的处理,代码如下:

declare @num int
set @num=3
lb:    --标记,名字可以自己起
print @num
if(@num>1)
beginset @num-=1;goto lb
end

本文转自齐师傅博客园博客,原文链接:http://www.cnblogs.com/youring2/p/4916396.html,如需转载请自行联系原作者

SQL Server编程(01)流程控制相关推荐

  1. SQL Server 进阶 01 数据库的设计

    SQL Server 进阶 01 数据库的设计 本篇目录 课程内容回顾及介绍 为什么需要规范的数据库设计 设计数据库的步骤 绘制E-R(实体-关系)图 实体-关系模型 如何将E-R图转换为表 数据规范 ...

  2. Sql Server编程

    Sql Server编程 1.注释语句          单行 --          多行  /*                    */ 2.申明变量          declare @la ...

  3. Visual C#的SQL Server编程

    Visual Studio.NET的中文Beta 2版本推出已有一段时日了,相比早期的Beta 1版本,新版本各方面都有很大的变化,其中包括SQL Server编程方面,在中文Beta 2中,数据库的 ...

  4. SQL Server安全机制–如何控制用户能够在报告中查看哪些数据

    介绍 ( Introduction ) A few years back, a client asked me to implement a quick and dirty "securit ...

  5. sql server计算机用户权限,SQL Server新增用户并控制访问权限设置。

    新增用户: 一.进入数据库:[安全性]->[登录名]->[新建登录名] 二.在常规选项卡中.如图所示,创建登录名.注意设置默认的数据库. 三.在[用户映射]下设置该用户所能访问的数据库.并 ...

  6. SQL Server 2017 安装流程

          我们在做学生系统的时候都会要求安装数据库,否则我们的学生系统便无法运行,下面跟大家简单分享一下我的SQL Server 2017的安装流程: 第一步:       安装SQL数据库电脑必须 ...

  7. SQL Server编程(06)触发器

    SQL Server 通过触发器用来保证业务逻辑和数据的完整性.在SQL Server中,触发器是一种特殊类型的存储过程,可在执行语言事件时自动触发.SQL Server中触发器包括三种:DML触发器 ...

  8. SQL server笔记01(数据查询前内容)

    数据库的创建和管理 1.创建数据库 1.create database databasename 2.create database databasename on (name=databasenam ...

  9. 存储过程 SQL server(01)

    例子: ALTER PROCEDURE [dbo].[XXOO_ifelse] @Source_ID intAS DECLARE @temp VARCHAR(12) BEGIN SET @Source ...

最新文章

  1. jquery操作select option使用小结
  2. 普通计算机网络和工业控制网络的区别,浅谈工控电脑和普通电脑的区别
  3. 腾讯官方游戏《陆战之王 3D坦克大战》
  4. HTTP和HTTPS详解
  5. docker安装rabbitmq及简单管理
  6. centos自带python2.6升级到python2.7。并解决yum pip easy_install pip等模块兼容性问题
  7. Replication的犄角旮旯(四)--关于事务复制的监控
  8. java编程 停等协议_在应用层模拟实用停等协议
  9. The file is absent or does not have execute permission This file is needed to run this program
  10. nc加载不了java,用友NC系统使用过程中常见问题和解决方法
  11. 强烈推荐 20 个免费和开源数据可视化工具
  12. python电脑版微信-微信PC版的API接口 | 可通过Python调用微信功能
  13. vue鼠标划过移入移出触发方法
  14. aspose-word的简单使用以及转pdf线上乱码
  15. 云上全流程透明性备品备件协同管理
  16. picker插件 vue 移动端_移动端的picker参考vux
  17. MySQL源代码的海洋中游弋 初探MySQL之SQL执行过程
  18. 免单拼团商城小程序开发
  19. 清华大学五道口金融学院2022年博士生(联合培养项目)招生简章
  20. word 对齐方式 左对齐,居中,两端对齐 的区别 (图示)

热门文章

  1. 如何给CSDN博客添加个人微信二维码或自定义栏目
  2. jenkins配置sonar并扫描C#代码
  3. mysql怎么看历史最高连接数_MySQL数据库怎么查看和修改最大连接数
  4. 又来啦 11道软件测试经典面试题
  5. Android提供了哪些主要UI控件,Android必备:Android UI控件的了解与学习
  6. wincc7的常用c语言,wincc几个常用c语言编程-20210324073153.docx-原创力文档
  7. 机顶盒ttl无法输入_一个作业,多个TTL——Flink SQL 细粒度TTL配置的实现(二)
  8. rust爱拍视频解说_抖音视频制作必备Mac神器,上热门儿不是事儿
  9. oracle catalog命令,使用Catalog命令注册RMAN备份集
  10. DE 32: Limit Cycles