流程控制语句
流程控制语句是指那些用来控制程序执行和流程分支的命令,在sql server 2000中,育种控制语句主要用来控制sql语句、语句块或者存储过程执行流程。
( 1 ). begin end语句
begin end语句能够将多个transact - sql语句组合成一个语句块,并将它们视为一个单元处理。在条件语句和循环等控制流程语句中,当符合特定条件便要执行两个或者多个语句时,就需要使用beginend语句,其语法形式为:
begin
{sql_statement | statement_block}
end
例:
use  taihang
go
declare  @message  varchar ( 200 )
if  exists ( select  *  from  员工数据表
where  所属部门 = ' 办工室 ' )
begin
set  @message = ' 下列人员在办公室工作 '
print  @message
select  员工姓名  from  员工数据表
where  所属部门 = ' 办公室 '
end
else
begin
set  @message = ' 没有人在办公室 '
print  @message
end
go
( 2 ). if else语句
if else语句是条件判定语句,其中,else子句是可先的,最简单的if语句没有else子句部分。 if else语句用来判定当某一条件成立时执行某段程序,条件不成立时执行另一段程序。sql server答应嵌套使用ifelse语句,而且嵌套层数没有限制。
语法:
if  boolean_expression
{sql_statement | statement_block}
[ else
{sql_statement|statement_block} ]
( 3 ). if  exists
1 > .if后面的布尔表达式可含有select语句,假如select语句一个值,它可用来与另一值进行比较,以得到布尔表达式。
2 > .假如select语句返回不止一个值,可使用if  exists .语法如下:
if  exists ( select  statement)
{sql_statement | statement_block}
[ else [bolean_expression ] 
{sql_statement | statement_block}]
例:查询标识号为1389的出版商出版的任何书的信息
if  exists ( select  *  from  titles
where  pub_id = ' 1389 ' )
begin
print ' 包含如下图书 '
select  *  from  titles
where  pub_id = ' 1389 '
end
else
print ' 无 '
注重:一定不要把ifexists和聚合函数一起使用,因为聚合函数总是返回数据,即使数据是0
( 4 ).while语句
while语句用于设置反复执行sql语句或语句块的条件。只要指定的条件为真,就反复执行语句。其中,c
ontinue语句可以使程序跳过continue语句后面的语句,回到while循环的第一行命令。break语句则使程序完全跳出循环,结束while语句的执行。
1 > break语句交在某些情况发生时,立即无条件地退出最内层while循环,语法为:
while逻辑表达式
begin
break
end
2 > continue语句在某些情况发生时,控制程序跳出本次循环,重新天始下一次while循环。语法为:
while逻辑表达式
begin
continue
end
注重:假如select语句用作while语句的条件,那么,select语句必须包含在英文括号中。
例:
declare  @x 
int ,  @y  int ,  @c  int
select  @x = 1 , @y = 1
while  @x < 3
begin
print  @x
while  @y < 3
begin
select  @c = 100 * @x + @y
print  @c
select  @y = @y + 1
end
select  @x = @x + 1
select  @y = 1
end
( 5 ).case表达式
case表达式可以计算多个条件,并将其中一个符合条件的结果表达式返回。case表达式的语法为:
case  字段名或变量名
when  逻辑表达式1  then  结果表达式1
when  逻辑表达式2  then  结果表达式2
when  逻辑表达式3  then  结果表达式3
else  结果表达式
end
例:调整员工工资,工作级别为1的上调8 % ,工作级别为2的上调7 % ,工作级别为3的上调6 % ,其它上调5 %
use  taihang
go
update  employee
set  wage =
case
when  job_level = ' 1 '  then  wage * 1.08
when  job_level = ' 2 '  then  wage * 1.07
when  job_level = ' 3 '  then  wage * 1.06
else
then  wage * 1.05
( 6 ).return语句
return语句用于无条件地终止一个查询、存储过程或者批处理,此时位于return之后的程序将不会被执行。return语句的语法形式为:
return  整数表达式
通常,存储过程使用返回代码表示存储过程执行的成功或失败。无错误,则返回0,否则,返回非零值。
( 7 ).waitfor语句
waitfor语句用于暂时停止执行sql语句、语句块或者存储过程等,直到所设定的时间已过或者所设定的时间已到才继续执行。
语法:
waitfor  delay 时间间隔
其中:时间间隔指定执行waitfor语句之前需要等待事件,最多为24小时。
也可写成: waitfor  time 时间值
其中,时间值指定waitfor语句将要执行的时间
流程控制语句
transact-sql语言提供了一些可以用于改变语句执行顺序的命令,称为流程控制语句。流程控制语句答应用户更好地组织存储过程中的语句,方便地实现程序的功能。流程控制语句与常见的程序设计语言类似,主要包含以下几种。
(1)  if…else语句
if <;条件表达式>
<;命令行或程序块>
[else [条件表达式]
<;命令行或程序块>]
其中<;条件表达式>可以是各种表达式的组合,但表达式的值必须是“真”或“假”。else子句是可选的。if…else语句用来判定当某一条件成立时执行某段程序,条件不成立时执行另一段程序。假如不使用程序块,if或else只能执行一条命令。if…else可以嵌套使用,最多可嵌套32级。
(2)  begin…end语句
begin
<;命令行或程序块>
end
begin…end用来设置一个程序块,该程序块可以被视为一个单元执行。begin…end经常在条件语句中使用,如if…else语句。假如当if或else子句为真时,想让程序执行其后的多条语句,这时就要把这多条语句用begin…end括起来使之成为一个语句块。在begin…end语句中可以嵌套另外的b
egin…end语句来定义另一程序块。
(3)  case语句
case<;运算式>
when<;运算式>then<;运算式>
when<;运算式>then<;运算式>
[else<;运算式>]
end
例如,在pubs数据库中查询每个作者所居住州的全名,可以使用如下代码实现:
select au_fname, au_lname,
case state
when 'ca' then 'california'
when 'ks' then 'kansas'
when 'tn' then 'tennessee'
when 'or' then 'oregon'
when 'mi' then 'michigan'
when 'in' then 'indiana'
when 'md' then 'maryland'
when 'ut' then 'utah'
end as statename
from pubs.dbo.authors
order by au_lname
执行结果:
au_fname            au_lname                                  statename 
-------------------- ---------------------------------------- ----------
abraham            bennet                                    california
reginald            blotchet-halls                          oregon
cheryl              carson                                    california
michel              defrance                                  indiana
innes              del castillo                            michigan
ann                  dull                                        california
(4)  while…continue…break语句
while<;条件表达式>
while语句怎么退出
begin
<;命令行或程序块>
[break]
[continue]
[命令行或程序块]
end
while语句在设置的条件为真时会反复执行命令行或程序块。continue语句可以让程序跳过continue语句之后的语句,回到while循环的第一行。break语句则让程序完全跳出循环,结束while循环的执行。while语句也可以嵌套使用。
注重:假如嵌套了两个或多个while循环,内层的break语句将导致退出到下一个外层循环。首先运行内层循环结束之后的所有语句,然后下一个外层循环重新开始执行。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。