22.5 循环语句
最基本的循环称为无条件循环,如果没有指定exit语句,循环将无条件执行。这种循环称为死循环,死循环尽量避免。
22.5.1 无条件循环
语法格式如下:
Loop
---statement---
Exit when condition
End loop;
案例
SQL> declare i number(2):=1; begin loop dbms_output.put_line(i); i:=i+1; exit when i>10; end loop; end; /
22.5.2 While循环
语法形式如下:
While condition
Loop
Statement;
End loop;
SQL> declare i number(2):=1; begin while i<10 loop dbms_output.put_line(i); i:=i+1; end loop; end; /
22.5.3 For循环
语法形式:
For loop_control_variable in [reverse] lower upper loop
Statement;
End loop;
SQL> begin for i in 1..10 loop dbms_output.put_line(i); end loop; end; /
22.5.4 PL/SQL语句中的SQL语句
declare countnum number(2); //声明变量 begin select count(*) into countnum from emp; //into的作用把从数据中检测出的数据赋值给哪个变量 dbms_output.put_line(countnum); end; /
注意:如果在select中没有into语句则会出现错误。
declare empno number(4); ename varchar2(10); job varchar2(9); begin select empno,ename,job into empno,ename,job from emp; dbms_output.put_line(empno||'/'||ename||'/'||job); end; /
以上代码中会出现错误,原因是因为定义的变量只可以存储一个单独的值,而返回的是多个值。正确的语法格式应该为:
SQL> declare 2 empno number(4); 3 ename varchar2(10); 4 job varchar2(9); 5 begin 6 select empno,ename,job into empno,ename,job from emp where empno='7369'; //在这加上where条件了 7 dbms_output.put_line(empno||'/'||ename||'/'||job); 8 end; 9 / 7369/SMITH/CLERK