T-SQL程序设计之流程控制语句
2015-11-07 20:02
246 查看
流程控制语句是用来控制程序执行流程的语句,通过对程序流程的组织和控制,提高编程语言的处理能力,满足程序设计的需要
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 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 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
BREAK
在循环语句中用于退出本层循环,当循环体中有多层循环嵌套时,使用BREAK语句只能退出其所在的本层循环。
CONTINUE 在循环语句中用于结束本次循环,重新转入循环开始条件的判断。
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))
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)
WAITFOR { DELAY 'time' | TIME 'time' } DELAY 'time' 用于指定SQL Server必须等待的时间,
TIME 'time' 用于指定SQL Server 等待到某一时刻。
例如:设定在早上八点半执行的查询语句
USE stsc
BEGIN
WAITFOR TIME '8:30'
SELECT * FROM student
END
TRY…CATCH语句用于对T-SQL语言中的错误进行处理,其语法格式如下:
BEGIN TRY
{ sql_statement | statement_block }
END TRY
BEGIN CATCH
[ { sql_statement | statement_block } ]
END CATCH
[ ; ]
-----------------------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
[ ; ]
相关文章推荐
- C#编程自学之流程控制语句
- JavaSE基础第二部分:Java基础语法之流程控制语句
- T-SQL程序设计之数据类型
- T-SQL程序设计之标识符,常量和变量
- T-SQL程序设计之运算符与表达式
- PHP流程控制语句
- T-SQL查询进阶--流程控制语句
- pup 流程控制语句(下)
- Kotlin------流程控制语句
- [C++]C++的流程控制语句
- Kotlin------流程控制语句
- 中英文对照 —— 编程
- 第4天 流程控制语句与函数初识
- chapter4 流程控制语句
- shell流程控制语句
- js学习笔记 js添加元素,之前之后 流程控制语句
- java基础——流程控制语句(顺序结构)
- 流程控制语句
- Java复习笔记+经验总结-01 运算符 表达式 数组 流程控制语句
- 《java编程思想》第四章:控制执行流程