SQL流程控制语句

流程控制语句

Transact-SQL语言提供了一些可以用于改变语句执行顺序的命令,称为流程控制语句。流程控制语句允许用户更好地组织存储过程中的语句,方便地实现程序的功能。流程控制语句与常见的程序设计语言类似,主要包含以下几种。

(1)   IFELSE语句

 

IF <条件表达式>

     <命令行或程序块>

[ELSE [条件表达式]

     <命令行或程序块>]

 

其中<条件表达式>可以是各种表达式的组合,但表达式的值必须是“真”或“假”。ELSE子句是可选的。IFELSE语句用来判断当某一条件成立时执行某段程序,条件不成立时执行另一段程序。如果不使用程序块,IFELSE只能执行一条命令。IFELSE可以嵌套使用,最多可嵌套32级。

(2)   BEGINEND语句

 

BEGIN

     <命令行或程序块>

END

 

BEGINEND用来设置一个程序块,该程序块可以被视为一个单元执行。BEGINEND经常在条件语句中使用,如IFELSE语句。如果当IFELSE子句为真时,想让程序执行其后的多条语句,这时就要把这多条语句用BEGINEND括起来使之成为一个语句块。在BEGINEND语句中可以嵌套另外的BEGINEND语句来定义另一程序块。

(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)   WHILECONTINUEBREAK语句

 

WHILE<条件表达式>

BEGIN

     <命令行或程序块>

     [BREAK]

     [CONTINUE]

     [命令行或程序块]

END

 

WHILE语句在设置的条件为真时会重复执行命令行或程序块。CONTINUE语句可以让程序跳过CONTINUE语句之后的语句,回到WHILE循环的第一行。BREAK语句则让程序完全跳出循环,结束WHILE循环的执行。WHILE语句也可以嵌套使用。

注意:如果嵌套了两个或多个WHILE循环,内层的BREAK语句将导致退出到下一个外层循环。首先运行内层循环结束之后的所有语句,然后下一个外层循环重新开始执行。

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值