欢迎来到天天文库
浏览记录
ID:16258125
大小:20.77 KB
页数:12页
时间:2018-08-08
《goto语句可以无条件跳到一个标签处》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、GOTO语句可以无条件跳到一个标签处BEGIN...IFcredit_rating<3THEN...EXIT;--notallowedENDIF;END;记住,EXIT语句必须放在循环内。如果想在PL/SQL块正常到达程序结尾之前而终止执行,可以使用RETURN语句。EXIT-WHENEXIT-WHEN语句可以根据给定的条件跳出循环。当遇到EXIT语句时,WHEN子句中的表达式值就会被计算。如果条件满足,循环就会被终止,控制权转到循环语句之后的语句。示例如下:LOOPFETCHc1INTO...EXITWHENc1%NOTFOUND;--exitloop
2、ifconditionistrue...ENDLOOP;CLOSEc1;在条件满足之前,循环是不会结束的。所以,循环里的语句必须要改变循环条件的值。上例中,如果FETCH语句返回了一行值,WNEN子句中的条件就为假;如果不能返回结果,WNEN子句中的条件就为真,循环就会结束,控制权转入CLOSE语句。EXIT-WHEN语句可以替代简单的IF语句,例如,比较下面两段代码:EXITWHENcount>100;这两个语句在逻辑上是等价的,但EXIT-WHEN语句更容易阅读和理解。循环标签跟PL/SQL块一样,循环也是可以添加标签。标签必须出现在LOOP语句的开
3、端,语法如下:<<label_name>>LOOPsequence_of_statementsENDLOOP;而在LOOP语句结束部分出现的标签名称是可选的,语法如下:<<my_loop>>LOOP...ENDLOOPmy_loop;在LOOP结束部分使用标签名称能够改善可读性。无论使用哪种EXIT语句形式,都可以结束一个封闭的LOOP块,而不仅仅局限于当前的LOOP块。只要在我们想结束的封闭LOOP块上添加一个标签,然后像下面这样在EXIT语句中使用这个标签就可以了:<<outer>>L
4、OOP...LOOP...EXITouterWHEN...--exitbothloopsENDLOOP;...ENDLOOPouter;2、WHILE-LOOPWHILEconditionLOOPsequence_of_statementsENDLOOP;每次循环之前,程序都是计算布尔表达式的值。如果条件为真,语句序列就会被执行,然后重新返回循环顶部计算布尔表达式的值;如果布尔表达式的值为假或空,控制权就会被交给循环之后的语句。下面看一个例子:WHILEtotal<=25000LOOP...SELECTsalINTOsalaryFROMempWHEREx
5、=x;...total:=total+salary;ENDLOOP;循环的次数是与条件相关的,而且在循环结束之前是未知的。由于条件是在循环顶部测试的,所以语句序列有可能一次都没有执行。在上面的例子中,如果total的初始值比25000大,那么条件值就是假,循环就会被跳过。有些语言有LOOPUNTIL或是REPEATUNTIL这样的结构,在底部测试条件表达式的值。这样,语句序列就会至少执行一次。PL/SQL没有这样的结构,但我们可以变通地使用下面的方法来实现这样的功能:要保证WHILE循环至少执行一次,在条件表达式中使用初始化过的布尔变量,如下例所示:done:
6、=FALSE;WHILENOTdoneLOOPsequence_of_statements;done:=boolean_expression;ENDLOOP;在循环内的语句必须为布尔变量赋上一个新值。否则循环就会无限地执行下去。如下例的两个LOOP语句在逻辑上是等价的:WHILETRUELOOP...ENDLOOP;LOOP...ENDLOOP;3、FOR-LOOPFOR语句会在指定的整数范围内进行循环操作。循环的内容被关键字FOR和LOOP封闭起来。两个"点"(..)作为范围操作符来使用。语法如下:FORcounterIN[REVERSE]lower_bou
7、nd..higher_boundLOOPsequence_of_statementsENDLOOP;当首次进入FOR循环时,循环的范围就会被确定下来,并且不会重新计算。如下例所示,语句序列会执行三次,每执行一次,循环因子就会增加1。下例演示了如果下界值等于上界值,循环中的语句序列只执行一次:FORiIN3..3LOOP--assignthevalues3toisequence_of_statements--executesonetimeENDLOOP;默认情况下,循环总是从下界到上界。不过也可以使用REVERSE关键字,让循环从上界往下界执行。但是要记住,范围
8、的书写格式仍旧是递增顺序的。FORiI
此文档下载收益归作者所有