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