用户名:  密码:   
您当前的位置:首页 > SQL数据库 >  Oracle > 

第27讲 一重,二重,多重分支的if语句及例子,loop循环,while循环及举例

上次修改时间: 2015-12-10 09:28:46      来源:网络总结      作者:钢铁长陈
上一页      路径:DSD\Learn\SQL数据库相关\Oracle数据库学习\韩顺平.玩转oracle教程笔记1_30讲\      下一页

一重,二重,多重分支的if语句及例子,loop循环,while循环及举例

pl/sql进阶
oracle的视图 安全,节约磁盘空间,
oracle的触发器

掌握高级用法,能写分页过程,java调用
会处理oracle常见的例外
会写各种触发器
理解视图的概念并能灵活应用

控制语句,条件,循环,顺序结构
各种if语句,
使用循环语句
goto和null语句 ,goto语句不推荐使用

条件分支的三种结构:
一层分支:if--then--end if;
二重分支:if--then--else--end if;
多重分支:if--then--else if--else if--else--end if;

输入一员工名,如其工资低于2000,就给其工资加10%
create or  replace  procedure sp_pro6(spName varchar2) is
v_sal emp.sal%type;
begin
select sal into v_sal from emp where ename=spName;
if v_sal<2000 then
update emp set sal=sal+sal*1.1where ename=spName; --这里出错,要把sal*10%改为sal*1.1
end if;
end;
/
调用
exec sp_pro6('SCOTT');
exec sp_pro6('FORD');

二重条件分支 if--then--else
例:输入雇员名,如果员工补助不为0就加100,如果为0就加200
create or replace procedure sp_pro6(spName varchar2) is
v_comm emp.comm%type;
begin
  select comm into v_comm from emp where ename=spName;
  if v_comm<>0 then
    update emp set comm=comm+100 where ename=spName;
  else
    update emp set comm=comm+200 where ename=spName;
  end if;
end;
注:这些语句只能部门达到目的,如是com为空则值不会增加

多重分支
例:输入一个雇员的编号,如果职位是president,就给他的工资增加1000,是manager就加500,其它加200
create or replace procedure sp_pro6(spNo number) is
v_job emp.job%type;
begin
  select job into v_job from emp where empno=spNo;
  if v_job='PRESDIENT' then
    update emp set sal=sal+1000 where empno=spNo;
  elsif v_job='MANAGER' then --注:这里是elsif,没有e,如果改成elseif就会出语法错误,在pl/sql编辑器中写错颜色也不一样
    update emp set sal=sal+500 where empno=spNo;
  else
    update emp set sal=sal+200 where empno=spNo;
  end if;
end;
/
调用
exec sp_pro6(7839);

loop循环语句举例:
create table users1(userNo number,username varchar2(40)); //先创建一个user1表有以演示loop语句
循环插入spName字段10次
create or replace procedure sp_pro6(spName varchar2) is
v_num number:=1;//定义v_num类型为number,并赋初始值为1
begin
  loop
    insert into users1 values(v_num,spName);
    exit when v_num=10;
    v_num:=v_num+1;
  end loop;
end;
/
调用过程
exec sp_pro6('你好');

while循环语句举例:
添加10个数据,从11开始
create or replace procedure sp_pro6(spName varchar2) is
v_num number:=11;--定义v_num类型为number,并赋初始值为11
begin
  while v_num<=20 loop
    insert into users1 values(v_num,spName);
    v_num:=v_num+1;
  end loop;
end;
/