oracle的控制语句

控制语句
一.条件语句
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/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值