控制语句
一.条件语句
1.if else
SQL>set serverout on
SQL>declare deptno_count number;
begin
select distinct first_value(deptno) over(order by a desc) into deptno_count from(
select deptno,count(1) a from emp group by deptno);
if
deptno_count
='10' then dbms_output.put_line('人数最多的deptno=10');
elsif
deptno_count
='20' then
dbms_output.put_line('人数最多的deptno=20');
else
dbms_output.put_line('人数最多的deptno=30');
end if;
end;
/
2.case when
case 变量/表达式
when 值1,
then ...
when 值2
then ...
...
else
...
end case;
或
case
when 布尔表达式1,
then ...
when 布尔表达式2,
then ...
...
else
...
end case;
二. 循环语句
1.无条件循环
loop
循环操作
end loop;
对于无条件循环语句,一定要保证在循环内部可以利用exit语句跳出循环,否则会造成死循环.
eg.显示出工资最多的5名员工
declare v_rn number:=0;
v_name varchar2(20);
begin
loop
if v_rn>=5 then
exit;
end if;
[可以把if循环改为:
exit when v_rn>=5]
v_rn :=v_rn+1;
select ename into v_name from(
select a.ename,a.sal,rownum rn from (
select * from emp order by sal desc) a ) where v_rn=rn;
dbms_output.put_line('排名第'||v_rn||'的是'||v_name);
end loop;
end;
/
2.while循环
while 条件判断 loop
循环操作
end loop;
eg.
declare v_rn number:=0;
v_sal number;
v_name varchar2(20);
begin
while v_rn<=5 loop
v_rn:=v_rn+1;
select ename,sal into v_name,v_sal from (
select a.*,rownum rn from (select * from emp order by sal desc) a) where v_rn=rn;
dbms_output.put_line('排名第'||v_rn||'的是'||v_name||',工资为'||v_sal);
end loop;
end;
/
3.for循环
declare v_name varchar2(20);
begin
for v_id in 1..5 loop
select ename into v_name from(
select ename,rownum rn from emp) where v_id=rn;
dbms_output.put_line(v_id||'号员工为'||v_name);
end loop;
end;
/
for v_id in 1..5 loop 定义了变量v_id, in 1..5制定了变量v_id的范围是1-5,与其他循环最大的区别就是,for循环自行声明变量,所以开始不用对变量进行生命.
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26918004/viewspace-751454/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/26918004/viewspace-751454/