循环语句:LOOP,WHILE和数字式循环
⼀简单循环
1 语法:
LOOP
要执⾏的语句;
EXIT WHEN <;条件语句> --条件满⾜,退出循环语句
END LOOP;
2 例⼦:
DECLARE
int NUMBER(2) :=0;
BEGIN
LOOP
int := int + 1;
DBMS_OUTPUT.PUT_LINE('int 的当前值为:'||int);
EXIT WHEN int =10;
END LOOP;
END;
⼆ WHILE循环
1 语法:
WHILE <;布尔表达式> LOOP
要执⾏的语句;
END LOOP;
2 例⼦:
DECLARE
x NUMBER :=1;
BEGIN
WHILE x<=10 LOOP
DBMS_OUTPUT.PUT_LINE('X的当前值为:'||x);
x:= x+1;
END LOOP;
END;
三数字式循环
1 语法:
[<<;循环标签>>]
FOR 循环计数器 IN [ REVERSE ] 下限 .. 上限 LOOP
要执⾏的语句;
END LOOP [循环标签];
每循环⼀次,循环变量⾃动加1;使⽤关键字REVERSE,循环变量⾃动减1。跟在IN REVERSE 后⾯的数字必须是从⼩到⼤的顺序,⽽且必须是整数,不能是变量或表达式。可以使⽤EXIT退出循环。
2 例⼦:
BEGIN
FOR int  in 1..10 LOOP
DBMS_OUTPUT.PUT_LINE('int 的当前值为: '||int);
END LOOP;
END;
CREATE TABLE temp_table(num_col NUMBER);
DECLARE
V_counter NUMBER := 10;
BEGIN
INSERT INTO temp_table(num_col) VALUES (v_counter );
FOR v_counter IN 20 .. 25 LOOP
INSERT INTO temp_table (num_col ) VALUES ( v_counter );
END LOOP;
INSERT INTO temp_table(num_col) VALUES (v_counter );
FOR v_counter IN REVERSE 20 .. 25 LOOP
INSERT INTO temp_table (num_col ) VALUES ( v_counter );
END LOOP;
END ;
DROP TABLE temp_table;
DECLARE
TYPE jobids_varray IS VARRAY(12) OF VARCHAR2(10); --定义⼀个VARRAY数据类型  v_jobids JOBIDS_VARRAY; --声明⼀个具有JOBIDS_VARRAY数据类型的变量
v_howmany NUMBER; --声明⼀个变量来保存雇员的数量
BEGIN
--⽤某些job_id值初始化数组
v_jobids := jobids_varray('FI_ACCOUNT', 'FI_MGR', 'ST_CLERK', 'ST_MAN');
--⽤END LOOP循环使⽤每个数组成员的值
FOR i IN v_jobids.FIRST..v_jobids.LAST LOOP
--针对数组中的每个岗位,决定该岗位的雇员的数量
SELECT count(*) INTO v_howmany FROM employees WHERE job_id = v_jobids(i);      DBMS_OUTPUT.PUT_LINE ( '岗位'||v_jobids(i)||
'总共有'|| TO_CHAR(v_howmany) || '个雇员');
END LOOP;
END;
在While循环中嵌套loop循环
/*求100⾄110之间的素数*/
DECLARE
v_m NUMBER := 101;
v_i NUMBER;
v_n NUMBER := 0;
BEGIN
WHILE v_m < 110 LOOP
v_i := 2;
LOOP
IF mod(v_m, v_i) = 0 THEN
v_i := 0;
EXIT;
END IF;
v_i := v_i + 1;
while语句简单例子
EXIT WHEN v_i > v_m - 1;
END LOOP;
IF v_i > 0 THEN
v_n := v_n + 1;
DBMS_OUTPUT.PUT_LINE('第'|| v_n || '个素数是' || v_m);
END IF;
v_m := v_m + 2;
END LOOP;
END;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。