【转】MS-SQL 控制语句

本文详细介绍了SQL中的流程控制语句,包括BEGIN...END、IF...ELSE、CASE、WHILE...CONTINUE...BREAK和RETURN等,通过示例展示了如何在SQL中实现条件判断和循环操作。

 BEGIN…END

其语法如下:
BEGIN
<命令行或程序块>
END
BEGIN…END用来设定一个程序块,将在BEGIN…END内的所有程序视为一个单元执行BEGIN…END经常在条件语句,如IF…ELSE中使用。
在BEGIN…END中可嵌套另外的BEGIN…END来定义另一程序块。

 

IF…ELSE

其语法如下:
IF <条件表达式>
<命令行或程序块>
[ELSE 
[条件表达式]
<命令行或程序块>]

Note:如果不使用程序块,IF或ELSE只能执行一条命令。IF…ELSE可以进行嵌套。

实例:

View Code
declare@x int,@y int,@z int
select @x=1,@y=2, @z=3
if@x>@y
  print'x>y' --打印字符串'x>y'
else if@y>@z
print'y>z'
    else print'z>y'
运行结果如下
z>y 
注意:在Transact-SQL中最多可嵌套32级

 

 Case

CASE 命令有两种语句格式:
CASE <运算式>
WHEN <运算式>THEN<运算式>
… 

WHEN<运算式>THEN<运算式>
[ELSE<运算式>]
END
CASE
WHEN 
<条件表达式> THEN <运算式>
WHEN <条件表达式> THEN <运算式>
[ELSE 
<运算式>]
END

实例:

View Code
第一种: 
SELECT 
CASE 
     WHEN price IS NULL THEN 'Not yet priced'
     WHEN price < 10 THEN 'Very Reasonable Title'
     WHEN price >= 10 AND price < 20 THEN 'Coffee Table Title'
     ELSE 'Expensive book!'
     END AS "Price Category",
     CONVERT(varchar(20), title) AS "Shortened Title"
from pubs.dbo.titles
ORDER BY price


第二种:
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 




SELECT top 2 id, uid,cn,
   CASE len(cn)
      WHEN 3 THEN 'California'
      WHEN 2 THEN 'Kansas'      
      END AS StateName
from conf_users
Update Case
use pangu
update employee
set e_wage =
case
when job_level = ’1’ then e_wage*1.08
when job_level = ’2’ then e_wage*1.07
when job_level = ’3’ then e_wage*1.06
else e_wage*1.05
end

 

WHILE…CONTINUE…BREAK

其语法如下:
WHILE 
<条件表达式>
BEGIN
<命令行或程序块>
[BREAK]
[CONTINUE]
[命令行或程序块]
END

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

实例:

While 嵌套
declare @x int, @y int, @c int
select @x = 1, @y=1
while @x < 3
begin
print @x --打印变量x 的值
while @y < 3
begin
select @c = 100*@ x+ @y
print @c --打印变量c 的值
select @y = @y + 1
end
select @x = @x + 1
select @y = 1
end

 

RETURN

RETURN [整数值]
RETURN 命令用于结束当前程序的执行,返回到上一个调用它的程序或其它程序。在括号内可指定一个返回值。

 

 

View Code
declare @x int @y int
select @x = 1 @y = 2
if x>y
return 1
else
return 2
如果没有指定返回值,SQL Server 系统会根据程序执行的结果返回一个内定值

转载于:https://www.cnblogs.com/gzh4455/archive/2012/06/13/2547879.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值