您的位置:首页 > 数据库

T-SQL程序设计之流程控制语句

2015-11-07 20:02 246 查看
        流程控制语句是用来控制程序执行流程的语句,通过对程序流程的组织和控制,提高编程语言的处理能力,满足程序设计的需要



-----------------------BEGIN...END语句

       BEGIN...END语句用于将多条T-SQL语句定义为一个语句块。在执行时,该语句块作为一个整体来执行,语法格式如下:

BEGIN
{ sql_statement | statement_block }
END    其中,关键字BEGIN指示T-SQL语句块开始,END指示语句块的结束。sql_statement是语句块中的T-SQL语句,BEGIN…END可以嵌套使用,statement_block表示使用BEGIN…END定义的另一个语句块

     例如
BEGIN
DECLARE @me char(20)
SET @me = '移动电子商务'
BEGIN
PRINT '变量@me的值为:'
PRINT @me
END
END 

-----------------------IF...ELSE语句

    使用IF...ELSE语句时,需要对给定的条件进行判断,当条件为真或假时分别执行不同的T-SQL语句或语句序列,语法格式如下:

IF Boolean_expression /*条件表达式*/
{ sql_statement | statement_block } /*条件表达式为真时执行*/
[ ELSE
{ sql_statement | statement_block } ] /*条件表达式为假时执行*/
    例如
USE stsc
GO
IF (SELECT AVG(grade) FROM score WHERE cno='102')>80
BEGIN
PRINT '课程:102'
PRINT '平均成绩良好'
END
ELSE
BEGIN
PRINT '课程:102'
PRINT '平均成绩一般'
END

-----------------------WHILE、BREAK和CONTINUE语句

        1,WHILE语句

    程序中的一部分语句需要重复执行时,可以使用WHILE循环语句来实现,它的语法格式如下:
WHILE Boolean_expression /*条件表达式*/
{ sql_statement | statement_block } /*T-SQL语句序列构成的循环体*/      其执行流程如如下:



   例如:显示字符串'work'中每个字符的ASC|| 和字符

DECLARE @pn int, @sg char(8)
SET @pn = 1
SET @sg = 'Work'
WHILE @pn <= LEN(@sg)
BEGIN
SELECT ASCII(SUBSTRING(@sg, @pn, 1)), CHAR(ASCII(SUBSTRING(@sg, @pn, 1)))
SET @pn = @pn + 1
END

     2,break语句

     语法格式如下
BREAK
    在循环语句中用于退出本层循环,当循环体中有多层循环嵌套时,使用BREAK语句只能退出其所在的本层循环。

    

     3,continue语句

    语法格式:

CONTINUE    在循环语句中用于结束本次循环,重新转入循环开始条件的判断。

   
4,GOTO 语句

    GOTO语句用于实现无条件的跳转,将执行流程转移到标号指定的位置,其语法格式如下: 

GOTO label
     例如,计算1加到100的和,并输出结果
DECLARE @nm int, @i int
SET @i = 0
SET @nm = 0
lp:
SET @nm = @nm+ @i
SET @i = @i +1
IF @i <=100
GOTO lp
PRINT '1+2+...+100 = '+CAST (@nm AS char(10)) 

     
5,return 语句

      RETURN语句用从查询语句块、存储过程或者批处理中无条件退出,位于RETURN之后的语句将不被执行。语法格式如下:

RETURN [ integer_expression ] 
     integer_expression将整型表达式的值返回

     例如:判断是否存在学号为1006的学生,如果存在则返回,不存在则插入1006的学生信息。
USE stsc
IF EXISTS(SELECT * FROM student WHERE stno='1002')
RETURN
ELSE
INSERT INTO student VALUES('1002', '周映雪', '女', '1993-01-12', '通信', 49)

   6,WAITFOR语句

    指定语句块、存储过程或事务执行的时刻、或需等待的时间间隔。 语法格式如下:

WAITFOR { DELAY 'time' | TIME 'time' }     DELAY 'time' 用于指定SQL Server必须等待的时间,
     TIME 'time' 用于指定SQL Server 等待到某一时刻。

   例如:设定在早上八点半执行的查询语句

USE stsc
BEGIN
WAITFOR TIME '8:30'
SELECT * FROM student
END

   
7,TRY...CATCH语句

     TRY…CATCH语句用于对T-SQL语言中的错误进行处理,其语法格式如下:
BEGIN TRY
{ sql_statement | statement_block }
END TRY
BEGIN CATCH
[ { sql_statement | statement_block } ]
END CATCH
[ ; ]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息