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

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

        流程控制语句是用来控制程序执行流程的语句,通过对程序流程的组织和控制,提高编程语言的处理能力,满足程序设计的需要

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

-----------------------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语句序列构成的循环体*/
      其执行流程如如下:

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
[ ; ]