当前位置: 首页 > 图文教程 > 数据库 > MSSQL > SQL Server数据库技术(16)

MSSQL
sql 批量修改数据库表
mssql CASE,GROUP BY用法
利用SQL SERVER建立登录WINDOWS帐号
SQL Server 2008 正式版安装指南 包含序列号
SQL Server 2008图文安装教程
sql 语句 取数据库服务器上所有数据库的名字
sqlserver 数据类型转换小实验
SQL Server 存储过程解析
压缩技术给SQL Server备份文件瘦身
SQL Server 2005 还原数据库错误解决方法
Sql Server datetime问题
SQL语句 操作全集 学习mssql的朋友一定要看
格式导致的Excel导入sql出现异常的解决方法
SQL Server 数据库自动执行管理任务
sql Set IDENTITY_INSERT的用法
sql 修改表的所有者
过程需要参数 ''@statement'' 为 ''ntext/nchar/nvarchar'' 类型
mssql 建立索引
SQL Server 索引结构及其使用(一)--深入浅出理解索引结构
SQL Server 索引结构及其使用(二) 改善SQL语句

MSSQL 中的 SQL Server数据库技术(16)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 65 ::
收藏到网摘: n/a

Transact-SQL 语言使用的流程控制命令与常见的程序设计语言类似主要有以下几种控制命令。

4.6.1 IF…ELSE
其语法如下:
IF <条件表达式>
<命令行或程序块>
[ELSE [条件表达式]
<命令行或程序块>]
其中<条件表达式>可以是各种表达式的组合,但表达式的值必须是逻辑值“真”或“假”。ELSE子句是可选的,最简单的IF语句没有ELSE子句部分。IF…ELSE用来判断当某一条件成立时执行某段程序,条件不成立时执行另一段程序。如果不使用程序块,IF或ELSE只能执行一条命令。IF…ELSE可以进行嵌套。

例4-9
declare@x int,@y int,@z int
select @x=1,@y=2, @z=3
if@x>@y
  print'x>y' --打印字符串'x>y'
else if@y>@z
print'y>z'
    else print'z>y'
运行结果如下
z>y
注意:在Transact-SQL中最多可嵌套32级。

4.6.2 BEGIN…END
其语法如下:
BEGIN
<命令行或程序块>
END
BEGIN…END用来设定一个程序块,将在BEGIN…END内的所有程序视为一个单元执行BEGIN…END经常在条件语句,如IF…ELSE中使用。在BEGIN…END中可嵌套另外的BEGIN…END来定义另一程序块。

4.6.3 CASE
CASE 命令有两种语句格式:
CASE <运算式>
WHEN <运算式>THEN<运算式>

WHEN<运算式>THEN<运算式>
[ELSE<运算式>]
END

CASE
WHEN <条件表达式> THEN <运算式>
WHEN <条件表达式> THEN <运算式>
[ELSE <运算式>]
END
CASE命令可以嵌套到SQL命令中。
例4-10:调整员工工资,工作级别为“1”的上调8%,工作级别为“2”的上调7%,工作级别为“3”的上调6%,其它上调5%。
use pangu
update employee
set e_wage =
case
when job_level = ’1’ then e_wage*1.08
when job_level = ’2’ then e_wage*1.07
when job_level = ’3’ then e_wage*1.06
else e_wage*1.05
end
注意:执行CASE子句时,只运行第一个匹配的子名。

4.6.4 WHILE…CONTINUE…BREAK
其语法如下:
WHILE <条件表达式>
BEGIN
<命令行或程序块>
[BREAK]
[CONTINUE]
[命令行或程序块]
END
WHILE 命令在设定的条件成立时会重复执行命令行或程序块。CONTINUE命令可以让程序跳过CONTINUE 命令之后的语句,回到WHILE 循环的第一行命令。BREAK 命令则让程序完全跳出循环,结束WHILE 命令的执行。WHILE 语句也可以嵌套。

例4-11:
declare @x int @y int @c int
例4-11:
declare @x int, @y int, @c int
select @x = 1, @y=1
while @x < 3
begin
print @x --打印变量x 的值
while @y < 3
begin
select @c = 100*@ x+ @y
print @c --打印变量c 的值
select @y = @y + 1
end
select @x = @x + 1
select @y = 1
end
运行结果如下
1
101
102
2
201
202

4.6.5 WAITFOR
其语法如下:
WAITFOR {DELAY <‘时间’> | TIME <‘时间’>
| ERROREXIT | PROCESSEXIT | MIRROREXIT}
WAITFOR 命令用来暂时停止程序执行,直到所设定的等待时间已过或所设定的时间已到才继续往下执行。其中‘时间’必须为DATETIME 类型的数据,如:‘11:15:27’,
但不能包括日期各关键字含义如下:

  • DELAY 用来设定等待的时间最多可达24 小时;
  • TIME 用来设定等待结束的时间点;
  • ERROREXIT 直到处理非正常中断;
  • PROCESSEXIT 直到处理正常或非正常中断;
  • MIRROREXIT 直到镜像设备失败。

例4-12 等待1 小时2 分零3 秒后才执行SELECT 语句
waitfor delay ’01:02:03’
select * from employee

例4-13:等到晚上11 点零8 分后才执行SELECT 语句
waitfor time ’23:08:00’
select * from employee

4.6.6 GOTO
语法如下:
GOTO 标识符
GOTO 命令