ITPub博客

首页 > Linux操作系统 > Linux操作系统 > oracle的控制语句

oracle的控制语句

原创 Linux操作系统 作者:tsai_vogue 时间:2012-12-20 14:51:11 0 删除 编辑
控制语句
一.条件语句
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博客 ” ,链接:https://blog.itpub.net/26918004/viewspace-751454/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: oracle的model子句
请登录后发表评论 登录
全部评论

注册时间:2012-12-19

  • 博文量
    10
  • 访问量
    13110