SQL流程控制语句

流程控制语句

越学越有意思,不是很难!
流程控制语句 - nbcreator - 山野村夫流程控制语句
流程控制语句 - nbcreator - 山野村夫流程控制语句是指那些用来控制程序执行和流程分支的命令,在SQL Server 2000中,育种控制语句主要用来控制SQL语句、语句块或者存储过程执行流程。
流程控制语句 - nbcreator - 山野村夫(
1 ). begin 流程控制语句 - nbcreator - 山野村夫end语句
流程控制语句 - nbcreator - 山野村夫
begin 流程控制语句 - nbcreator - 山野村夫end语句能够将多个Transact - SQL语句组合成一个语句块,并将它们视为一个单元处理。在条件语句和循环等控制流程语句中,当符合特定条件便要执行两个或者多个语句时,就需要使用begin流程控制语句 - nbcreator - 山野村夫end语句,其语法形式为:
流程控制语句 - nbcreator - 山野村夫
begin
流程控制语句 - nbcreator - 山野村夫{sql_statement
| statement_block}
流程控制语句 - nbcreator - 山野村夫
end
流程控制语句 - nbcreator - 山野村夫例:
流程控制语句 - nbcreator - 山野村夫
use  taihang
流程控制语句 - nbcreator - 山野村夫
go
流程控制语句 - nbcreator - 山野村夫
declare   @message   varchar ( 200 )
流程控制语句 - nbcreator - 山野村夫
if   exists ( select   *   from  员工数据表
流程控制语句 - nbcreator - 山野村夫
where  所属部门 = ' 办工室 ' )
流程控制语句 - nbcreator - 山野村夫
begin
流程控制语句 - nbcreator - 山野村夫
set   @message = ' 下列人员在办公室工作 '
流程控制语句 - nbcreator - 山野村夫
print   @message
流程控制语句 - nbcreator - 山野村夫
select  员工姓名  from  员工数据表
流程控制语句 - nbcreator - 山野村夫
where  所属部门 = ' 办公室 '
流程控制语句 - nbcreator - 山野村夫
end
流程控制语句 - nbcreator - 山野村夫
else
流程控制语句 - nbcreator - 山野村夫
begin
流程控制语句 - nbcreator - 山野村夫
set   @message = ' 没有人在办公室 '
流程控制语句 - nbcreator - 山野村夫
print   @message
流程控制语句 - nbcreator - 山野村夫
end
流程控制语句 - nbcreator - 山野村夫
go
流程控制语句 - nbcreator - 山野村夫
流程控制语句 - nbcreator - 山野村夫(
2 ). if 流程控制语句 - nbcreator - 山野村夫else语句
流程控制语句 - nbcreator - 山野村夫
if 流程控制语句 - nbcreator - 山野村夫else语句是条件判断语句,其中,else子句是可先的,最简单的if语句没有else子句部分。 if 流程控制语句 - nbcreator - 山野村夫else语句用来判断当某一条件成立时执行某段程序,条件不成立时执行另一段程序。SQL Server允许嵌套使用if流程控制语句 - nbcreator - 山野村夫else语句,而且嵌套层数没有限制。
流程控制语句 - nbcreator - 山野村夫语法:
流程控制语句 - nbcreator - 山野村夫
if  boolean_expression
流程控制语句 - nbcreator - 山野村夫 {sql_statement
| statement_block}
流程控制语句 - nbcreator - 山野村夫
[ else 
流程控制语句 - nbcreator - 山野村夫 {sql_statement|statement_block}
]
流程控制语句 - nbcreator - 山野村夫
流程控制语句 - nbcreator - 山野村夫(
3 ). if 流程控制语句 - nbcreator - 山野村夫 exists
流程控制语句 - nbcreator - 山野村夫
1 > .if后面的布尔表达式可含有select语句,如果select语句一个值,它可用来与另一值进行比较,以得到布尔表达式。
流程控制语句 - nbcreator - 山野村夫
2 > .如果select语句返回不止一个值,可使用if  exists .语法如下:
流程控制语句 - nbcreator - 山野村夫
if   exists ( select  statement)
流程控制语句 - nbcreator - 山野村夫 {sql_statement
| statement_block}
流程控制语句 - nbcreator - 山野村夫
[ else [bolean_expression ]  
流程控制语句 - nbcreator - 山野村夫 {sql_statement
| statement_block}]
流程控制语句 - nbcreator - 山野村夫例:查询标识号为1389的出版商出版的任何书的信息
流程控制语句 - nbcreator - 山野村夫
if   exists ( select   *   from  titles
流程控制语句 - nbcreator - 山野村夫
where  pub_id = ' 1389 ' )
流程控制语句 - nbcreator - 山野村夫
begin
流程控制语句 - nbcreator - 山野村夫
print ' 包含如下图书 '
流程控制语句 - nbcreator - 山野村夫
select   *   from  titles
流程控制语句 - nbcreator - 山野村夫
where  pub_id = ' 1389 '
流程控制语句 - nbcreator - 山野村夫
end
流程控制语句 - nbcreator - 山野村夫
else
流程控制语句 - nbcreator - 山野村夫
print ' '
流程控制语句 - nbcreator - 山野村夫注意:一定不要把if流程控制语句 - nbcreator - 山野村夫exists和聚合函数一起使用,因为聚合函数总是返回数据,即使数据是0
流程控制语句 - nbcreator - 山野村夫
流程控制语句 - nbcreator - 山野村夫(
4 ).while语句
流程控制语句 - nbcreator - 山野村夫while语句用于设置重复执行SQL语句或语句块的条件。只要指定的条件为真,就重复执行语句。其中,continue语句可以使程序跳过continue语句后面的语句,回到while循环的第一行命令。break语句则使程序完全跳出循环,结束while语句的执行。
流程控制语句 - nbcreator - 山野村夫
1 > break语句交在某些情况发生时,立即无条件地退出最内层while循环,语法为:
流程控制语句 - nbcreator - 山野村夫while逻辑表达式
流程控制语句 - nbcreator - 山野村夫
begin
流程控制语句 - nbcreator - 山野村夫 流程控制语句 - nbcreator - 山野村夫
流程控制语句 - nbcreator - 山野村夫
break
流程控制语句 - nbcreator - 山野村夫 流程控制语句 - nbcreator - 山野村夫
流程控制语句 - nbcreator - 山野村夫
end
流程控制语句 - nbcreator - 山野村夫
2 > continue语句在某些情况发生时,控制程序跳出本次循环,重新天始下一次while循环。语法为:
流程控制语句 - nbcreator - 山野村夫while逻辑表达式
流程控制语句 - nbcreator - 山野村夫
begin
流程控制语句 - nbcreator - 山野村夫 流程控制语句 - nbcreator - 山野村夫
流程控制语句 - nbcreator - 山野村夫
continue
流程控制语句 - nbcreator - 山野村夫 流程控制语句 - nbcreator - 山野村夫
流程控制语句 - nbcreator - 山野村夫
end
流程控制语句 - nbcreator - 山野村夫注意:如果select语句用作while语句的条件,那么,select语句必须包含在英文括号中。
流程控制语句 - nbcreator - 山野村夫
流程控制语句 - nbcreator - 山野村夫例:
流程控制语句 - nbcreator - 山野村夫
declare   @x   int @y   int @c   int
流程控制语句 - nbcreator - 山野村夫
select   @x = 1 , @y = 1
流程控制语句 - nbcreator - 山野村夫
while   @x < 3
流程控制语句 - nbcreator - 山野村夫
begin
流程控制语句 - nbcreator - 山野村夫 
print   @x
流程控制语句 - nbcreator - 山野村夫 
while   @y < 3
流程控制语句 - nbcreator - 山野村夫 
begin
流程控制语句 - nbcreator - 山野村夫  
select   @c = 100 * @x + @y
流程控制语句 - nbcreator - 山野村夫  
print   @c
流程控制语句 - nbcreator - 山野村夫  
select   @y = @y + 1
流程控制语句 - nbcreator - 山野村夫 
end
流程控制语句 - nbcreator - 山野村夫 
select   @x = @x + 1
流程控制语句 - nbcreator - 山野村夫 
select   @y = 1
流程控制语句 - nbcreator - 山野村夫
end
流程控制语句 - nbcreator - 山野村夫
流程控制语句 - nbcreator - 山野村夫(
5 ).case表达式
流程控制语句 - nbcreator - 山野村夫case表达式可以计算多个条件,并将其中一个符合条件的结果表达式返回。case表达式的语法为:
流程控制语句 - nbcreator - 山野村夫
case  字段名或变量名
流程控制语句 - nbcreator - 山野村夫
when  逻辑表达式1  then  结果表达式1
流程控制语句 - nbcreator - 山野村夫
when  逻辑表达式2  then  结果表达式2
流程控制语句 - nbcreator - 山野村夫
when  逻辑表达式3  then  结果表达式3
流程控制语句 - nbcreator - 山野村夫流程控制语句 - nbcreator - 山野村夫
流程控制语句 - nbcreator - 山野村夫
else  结果表达式
流程控制语句 - nbcreator - 山野村夫
end
流程控制语句 - nbcreator - 山野村夫
流程控制语句 - nbcreator - 山野村夫例:调整员工工资,工作级别为1的上调8
% ,工作级别为2的上调7 % ,工作级别为3的上调6 % ,其它上调5 %
流程控制语句 - nbcreator - 山野村夫
use  taihang
流程控制语句 - nbcreator - 山野村夫
go
流程控制语句 - nbcreator - 山野村夫
update  employee
流程控制语句 - nbcreator - 山野村夫
set  wage =
流程控制语句 - nbcreator - 山野村夫
case
流程控制语句 - nbcreator - 山野村夫
when  job_level = ' 1 '   then  wage * 1.08
流程控制语句 - nbcreator - 山野村夫
when  job_level = ' 2 '   then  wage * 1.07
流程控制语句 - nbcreator - 山野村夫
when  job_level = ' 3 '   then  wage * 1.06
流程控制语句 - nbcreator - 山野村夫
else
流程控制语句 - nbcreator - 山野村夫
then  wage * 1.05
流程控制语句 - nbcreator - 山野村夫
流程控制语句 - nbcreator - 山野村夫(
6 ).return语句
流程控制语句 - nbcreator - 山野村夫return语句用于无条件地终止一个查询、存储过程或者批处理,此时位于return之后的程序将不会被执行。return语句的语法形式为:
流程控制语句 - nbcreator - 山野村夫
return  整数表达式
流程控制语句 - nbcreator - 山野村夫通常,存储过程使用返回代码表示存储过程执行的成功或失败。无错误,则返回0,否则,返回非零值。
流程控制语句 - nbcreator - 山野村夫
流程控制语句 - nbcreator - 山野村夫(
7 ).waitfor语句
流程控制语句 - nbcreator - 山野村夫waitfor语句用于暂时停止执行SQL语句、语句块或者存储过程等,直到所设定的时间已过或者所设定的时间已到才继续执行。
流程控制语句 - nbcreator - 山野村夫语法:
流程控制语句 - nbcreator - 山野村夫
waitfor  delay 时间间隔
流程控制语句 - nbcreator - 山野村夫其中:时间间隔指定执行waitfor语句之前需要等待事件,最多为24小时。
流程控制语句 - nbcreator - 山野村夫也可写成:
waitfor  time 时间值
流程控制语句 - nbcreator - 山野村夫其中,时间值指定waitfor语句将要执行的时间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值