1
数据库技术及应用
1.9.2.3 6.2.3 转移、等待、返回语句
6.2.3 转移、等待、返回语句

1.无条件转移(GOTO)语句

GOTO语句将程序执行流程无条件转移到GOTO之后的标签处,跳过后面的T-SQL语句,并从标签位置继续处理。GOTO语句和标签可在过程、批处理或语句块中的任何位置使用。GOTO语句还可以嵌套使用。

语法格式:

参数说明如下:

label:如果GOTO语句指向该标签,则其为处理的起点。标签必须符合标识符规则。无论是否使用GOTO语句,标签均可作为注释方法使用。

注意:GOTO可出现在条件控制流语句、语句块或过程中,但它不能跳转到批处理之外的标签处。GOTO分支可跳转到定义在GOTO之前或之后的标签。

【例6-15】采用GOTO语句的方法实现例6-13。代码如下:

2.等待(WAITFOR)语句

WAITFOR语句指定触发器语句块、存储过程或事务执行的时间、时间间隔或事件。即在达到指定时间或时间间隔之前,或者指定语句至少修改或返回一行之前,阻止执行批处理、存储过程或事务。

语法格式:

参数说明如下:

●DELAYtime_to_pass:用于指定SQL Server必须等待的时间,最长可为24小时。可以使用datetime数据可接受的格式之一指定time_to_pass,也可以将其指定为局部变量,不能指定日期。因此,不允许指定datetime值的日期部分。

●TIMEtime_to_execute:指定SQL Server等待到某一时刻。

【例6-16】 WAITFOR语句的使用。

在晚上10:20(22:20)执行存储过程sp_add_job,代码如下:

在两小时的延迟后执行存储过程,代码如下:

3.返回(RETURN)语句

用于从过程、批处理或语句块中无条件退出,不执行位于RETURN之后的语句。

语法格式:

参数说明如下:

integer_expression:将要返回的整型表达式的值。存储过程可以给调用过程或应用程序返回整型值。

注意:(1)除非另有说明,所有系统存储过程均返回0值。此值表示成功,而非0值则表示失败。

(2)用于存储过程,RETURN不能返回空值。如果某个过程试图返回空值(例如,使用RETURN@status,而@status为NULL),则将生成警告消息并返回0值。

【例6-17】如果在执行findstudent时没有带参数,则RETURN将使过程向屏幕发送一条消息后退出。如果带了参数,则将从相应的数据表中检索此学生的学号、姓名、出生日期和住址等信息。代码如下:

实战演练——BBS中查询帖子的浏览量

局部变量@n用于存储BBS数据库中发帖信息表的浏览人数属性列的平均值,编写代码查询发帖信息表的浏览人数属性列的平均值,如果>=1000则显示“该帖子浏览人数超过1000人次!”,否则显示“该帖子浏览人数低于1000人次!”。

操作步骤如下:

新建查询,输入以下代码,并调试运行,观察结果。