流程控制语句是用来控制程序执行流程的语句,通过对程序流程的组织和控制,提高编程语言的处理能力,满足程序设计的需要
-----------------------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 [ ; ]