LOOP语句的基本语法结构如下:
[<<label_name>>] LOOP statement... END LOOP label_name 【语法说明】 <<label_name>>:LOOP结构的标签,是可选项。 LOOP:LOOP循环开始标志。 statement:LOOP语句中循环执行的语句序列。 END LOOP:LOOP循环结束标志,可以添加LOOP结构的标签。
1.基本的LOOP语句
实例:要求声明变量,每次循环都需要为变量增加数字1,并输出结果。当变量值大于3时,退出@R_403_257@。
a、利用EXIT...WHEN结束@R_403_257@。
sql> set serveroutput on; sql--exit when sqldeclare 2 v_rlt number(8):=-3; 3 begin 4 <<fst_loop>> 5 loop 6 dbms_output.put_line('v_rlt = '||v_rlt); 7 v_rlt:=v_rlt+18 exit fst_loop when v_rlt > 9 end loop; 10 dbms_output.put_line(LOOP循环已经结束!'); 11 ; 12 / v_rlt = - v_rlt 20 LOOP循环已经结束! PL/sql procedure successfully completed
WHILE...LOOP结构和基本的LOOP语句不同,它本身可以结束LOOP循环。WHILE关键词后面需要有布尔表达式,当WHILE后面的布尔表达式为TRUE时,则循环体重的语句序列被执行1次,然后会重新判断WHILE后面的表达式是否为TRUE,只有当WHILE后的布尔表达式为FALSE时,才结束整个LOOP循环。
该语句结构的相关语法如下:
FOR...LOOP语句可以遍历某个范围的整数,该范围被FOR和LOOP关键词封闭。首次进入循环时,循环范围将被确定,并且以后不会再次计算。每循环一次,循环指数将会自动增加1。
FOR...LOOP语句的语法结构如下:
sqlfor..loop sql2 for v_rlt in 3.. loop 3 dbms_output.put_line(4 loop; 5 dbms_output.put_line(FOR循环已经结束!); 6 7 FOR循环已经结束!PLprocedure successfully completed
--goto用法 DECLARE x number; BEGIN x := 0; <<repeat_loop>> --循环点 x := x + 1; DBMS_OUTPUT.PUT_LINE(X); IF x < 9 THEN --当x的值小于9时,就goto到repeat_loop GOTO repeat_loop; END IF; END; --for用法 DECLARE x number; --声明变量 BEGIN x := 1;--给初值 FOR x IN REVERSE 1 .. 10 LOOP --reverse由大到小 DBMS_OUTPUT.PUT_LINE('x=' || x); END LOOP; DBMS_OUTPUT.PUT_LINE('end loop x=' || x); --x=1 END; --while 用法 DECLARE x number; BEGIN x := 0; WHILE x < 9 LOOP x := x + 1; DBMS_OUTPUT.PUT_LINE('x=' || x); END LOOP; DBMS_OUTPUT.PUT_LINE('end loop x=' || x); END; --loop循环用法 DECLARE x number; BEGIN x := 0; LOOP x := x + 1; EXIT WHEN x > 9; DBMS_OUTPUT.PUT_LINE('x=' || x); END LOOP; DBMS_OUTPUT.PUT_LINE('end loop x=' || x); END;