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