SQL Server编程(01)流程控制
批处理
应用程序向SqlServer发送的一组命令,Sql Server会将其编译成一个可执行单元,称为执行计划,执行计划中的语句每次执行一条。
每个不同的批处理用GO命令分割。GO命令不是SQL语句,它是告诉SSMS将GO之前的语句作为批处理一起发送给数据库引擎。
注意:GO命令不能和其它SQL命令写在同一行上!局部变量的作用域限定在一个批处理中,不可以在GO后面引用,否则报错!
另外,一次提交多个批处理时,一个批处理出错,只影响其本身继续执行,而不会影响下一个批处理的执行。
语句块
T-SQL中使用BEGIN……END来指定语句块。
注意:语句块中声明的变量,其作用域是在整个批处理中,也就是说,在BEGIN……END中定义的变量,可以在END之外进行访问,直到遇见GO。
BEGIN
declare @str nvarchar(50)
set @str='abc'
print(@str)
END
print(@str) --此处可以正常访问
go
print(@str) --此处报错:必须声明标量变量 "@str"。
条件语句
IF…ELSE…语句
以下代码纯属演示:
declare @num int
set @num=3 if(@num=1)
begin
--这里可以写多行代码
--如果是一行,可以省略begin...end
print 'num=1'
end
else if(@num=2)
--此处只有一行代码,省略begin...end
print 'num=2'
else
print 'num不等于1,也不等于2'
case…when…then…end语句
貌似只能用在select语句中?两种用法:
第一种:
declare @num int
set @num=3
select
case @num
when 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) --括号貌似也不是必需的
begin
print @num
set @num=@num-1
end
go
使用goto语句实现循环
goto语句其实是用来跳转的,据说乱用goto会把代码变得比意大利面更乱,因此许多编程语言中的goto基本都不怎么用。
在T-SQL中,我们可以使用goto来实现循环的处理,代码如下:
declare @num int
set @num=3
lb: --标记,名字可以自己起
print @num
if(@num>1)
begin
set @num-=1;
goto lb
end
SQL Server编程(01)流程控制的更多相关文章
- SQL Server 进阶 01 数据库的设计
SQL Server 进阶 01 数据库的设计 本篇目录 课程内容回顾及介绍 为什么需要规范的数据库设计 设计数据库的步骤 绘制E-R(实体-关系)图 实体-关系模型 如何将E-R图转换为表 数据规范 ...
- Oracle与SQL SERVER编程差异分析(入门)
网上有关Oracle与SQL SERVER性能差异的文章很多,结论往往是让你根据数据量与预算来选择数据库.但实际项目中,特别是使用 .Net 开发的系统,支持以上两种数据库或者更多已经成为Boss的普 ...
- SQL Server编程系列(2):SMO常用对象的有关操作
原文:SQL Server编程系列(2):SMO常用对象的有关操作 在上一篇周公简单讲述了SMO的一些基本概念,实际上SMO体系结构远不止周公在上一篇中讲述的那么简单,下图是MSDN上给出的一个完整的 ...
- SQL Server编程系列(1):SMO介绍
原文:SQL Server编程系列(1):SMO介绍 续篇:SQL Server编程系列(2):SMO常用对象的有关操作 最近在项目中用到了有关SQL Server管理任务方面的编程实现,有了一些自己 ...
- (转) SQL Server编程系列(1):SMO介绍
最近在项目中用到了有关SQL Server管理任务方面的编程实现,有了一些自己的心得体会,想在此跟大家分享一下,在工作中用到了SMO/SQL CLR/SSIS等方面的知识,在国内这方面的文章并不多见, ...
- [转]SQL Server编程:SMO介绍
转自:周公 最近在项目中用到了有关SQL Server管理任务方面的编程实现,有了一些自己的心得体会,想在此跟大家分享一下,在工作中用到了SMO/SQL CLR/SSIS等方面的知识,在国内这方面的文 ...
- Java编程基础——流程控制
Java编程基础——流程控制 摘要:本文主要介绍Java编程中的流程控制语句. 分类 流程控制指的是在程序运行的过程中控制程序运行走向的方式.主要分为以下三种: 顺序结构:从上到下依次执行每条语句操作 ...
- 034 01 Android 零基础入门 01 Java基础语法 04 Java流程控制之选择结构 01 流程控制概述
034 01 Android 零基础入门 01 Java基础语法 04 Java流程控制之选择结构 01 流程控制概述 本文知识点:Java中的流程控制相关概念的认识 三大流程控制语句结构的简介 顺序 ...
- SQL SERVER中的流程控制语句
流程控制语句 是指用来控制程序运行和流程分至点额命令.一般指的是逻辑计算部分的控制. 1.Begin End语句 封装了多个T-SQL语句组合,将他们组成一个单元来处理. 一般在条件查询或者循环等控制 ...
随机推荐
- [Ajax系列]Ajax介绍
Ajax简介: Ajax是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术. What ? AJAX=异步JavaScript和XML AJAX是一种用于创建快读动态网页的技术 通过在后台语 ...
- less 学习 (计划终于执行了啊,不再拖延了)
1.less是什么? 答:将CSS赋予动态语言的特性, 变量,继承,运算,函数. (less就是一个用js实现的CSS解析器,运行要依赖js引擎). 2.运行原理: 按照指定语法规则写好less文 ...
- Windows下Php安装mongodb扩展失败
查看php版本 下载对应的mongodb插件 将php_mongo.dll文件复制到php安装目录下的ext下 重启apache Apache –k restart 浏览器php.info( )测试 ...
- LINQ日常使用记录
1.公司一位美女程序媛写的 2.技术总监提供(来自互联网) var query = from f in db.TField join fw in db.TFieldWel on f.emp_no eq ...
- Ceph: validate that the RBD cache is active
Ceph: validate that the RBD cache is active Quick and simple test to validate if the RBD cache is en ...
- 炮兵阵地 POJ 1185
n*m P 和 M P可以放人 M不行 人不能相互打到 问最多可以放多少人 #include<stdio.h> #include<algorithm> #include< ...
- WordPress 博客文章时间格式the_time()设置
国外设计的WordPress 主题里的文章的时间格式是类似“十一月 21, 2010”这种格式的,而中国人习惯的是年在前,月紧跟其后,日在末尾,所以看国外的就显得很别扭,但是我们可以通过修改WP时间代 ...
- 让Chrome支持Ajax/$http方式读取本地文件
在开发中经常写些小demo调试一下插件什么的 数据源又经常手动构造分离为一个单独的文件.用ajax或$http去访问时总是拒绝访问.这个时候可以给Chrome的快捷图标加启动参数,让浏览器允许js访问 ...
- shell截取字符串的方法
参考文献: linux中shell截取字符串方法总结 [Linux]如何在Shell脚本中计算字符串长度? 截取字符串的方法一共有八种,主要为以下方法 shell中截取字符串的方法有很多中, ${ex ...
- mysql列转行
要得到 SELECT name, SUM(CASE course WHEN '语文' THEN score END ) AS '语文', SUM(CASE course WHEN '数学' THEN ...