T-SQL-流程控制语句 (转载)

时间:2021-02-13 00:46:35

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