VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 数据库 > T-SQL >
  • sql语句大全之流程控制语句

流程控制语句
流程控制语句是指那些用来控制程序执行和流程分支的语句,在SQL Server 2005中,流程控制语句主要用来控制SQL语句、语句块或者存储过程的执行流程。
1. IF…ELSE语句
IF…ELSE语句是条件判断语句,其中,ELSE子句是可选的,最简单的IF语句没有ELSE子句部分。IF…ELSE语句用来判断当某一条件成立时执行某段程序,条件不成立时执行另一段程序。SQL Server允许嵌套使用IF…ELSE语句,而且嵌套层数没有限制。
IF…ELSE语句的语法形式为:
   IF Boolean_expression
    { sql_statement | statement_block }
[ ELSE
    { sql_statement | statement_block } ]
例7-9 如果李四的平均成绩为60分以上,显示其成绩情况,否则显示文本:成绩状态不理想。
declare @avgs int
select @avgs=avg(grade)
from s,sc
where s.sno=sc.sno and sname='李四'
if(@avgs>=60)
select s.sno,sname,cno,grade
from s,sc
where s.sno=sc.sno and sname='李四'
else
print '成绩不理想'
2. BEGIN…END语句
 BEGIN…END语句能够将多个T-SQL语句组合成一个语句块,并将它们视为一个单元处理。在条件语句和循环等控制流程语句中,当符合特定条件便要执行两个或者多个语句时,就需要使用BEGIN…END语句。
 BEGIN…END语句的语法形式为:
BEGIN
         { sql_statement
         | statement_block
         }
       END
3.GO 语句
Go 语句是批的结束语句。批是一起提交并作为一个组执行的若干SQL语句。
例7-10  用Go 语句作为批的结束语句。
程序清单如下:
USE adventureworks
GO
DECLARE @MyMsg VARCHAR(50)
SELECT @MyMsg = 'Hello, World.'
GO -- @MyMsg 在Go语句后失效。
4.CASE语句
CASE语句可以计算多个条件式,并将其中一个符合条件的结果表达式返回。CASE语句按照使用形式的不同,可以分为简单CASE语句和搜索CASE语句。
简单CASE表达式:
CASE 表达式
        WHEN 表达式 THEN 表达式
WHEN 表达式 THEN 表达式        [ ...n ]
        [ELSE 表达式]
END
例7-11 根据sdept的数据显示其详细内容
use test
go
declare @dept varchar(50)
select @dept=
case sdept
when 'cs' then '计算机系'
when 'info' then '信息系'
when 'ma' then '数学系'
else '出错'
end
from s
where sno='001'
--显示其值
select @dept as系部
搜索CASE:
CASE
WHEN 布尔表达式 THEN 表达式
WHEN 布尔表达式 THEN 表达式        [ ...n ]
       [ELSE 表达式]
END
例7-12 使用搜索CASE,根据成绩的范围将显示其对应系的文本
use test
go
declare @score char(1)
select @score=
case
when grade>=90 and grade<=100 then 'A'
when grade>=80 and grade<90 then 'B'
when grade>=70 and grade<80 then 'C'
when grade>=60 and grade<70 then 'D'
else 'E'
end
from sc
where cno='100' and sno='001'
 
select @score
5.WHILE…CONTINUE…BREAK语句  
WHILE…CONTINUE…BREAK语句用于设置重复执行 SQL 语句或语句块的条件。只要指定的条件为真,就重复执行语句。其中,CONTINUE语句可以使程序跳过CONTINUE语句后面的语句,回到WHILE循环的第一行命令。BREAK语句则使程序完全跳出循环,结束WHILE语句的执行。
其语法形式为:
 WHILE Boolean_expression
    { sql_statement | statement_block }
    [ BREAK ]
    { sql_statement | statement_block }
    [ CONTINUE ]
例7-13 计算1到10之间的奇数之和
declare @i tinyint,@sum int
set @sum=0
set @i=0
while @i>=0
begin
if(@i>=10)
begin
select '总和'=@sum
break
end
else
begin
set @i=@i+1
if(@i % 2) = 0
continue
else
set @sum=@sum+@i
end
end

相关教程