PL/SQL 条件分支(一)

--数据库中的分支语句(3种)

PL/SQL 条件分支(一)

案例:

--    if-then
--编写过程:输入雇员名字,如果该雇员的工资低于10%,则工资增加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*1.1 where ename=spName;
end if;
end;

=====================================================================

PL/SQL 条件分支(一)

案例:

-- if-then-else

-输入雇员名字,如果该雇员的comm不是0,则comm增加100,若为0,则comm增加200

create or replace procedure sp_pro7(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;
--本案例中可以使用NVL将comm中为null的变为0

=========================================================================

PL/SQL 条件分支(一)

案例:

--输入雇员名字,如果该雇员的职位是PRESIDENT,就将工资增加1000,如果该雇员的职位是MANAGER,就将工资增加500,其他职位员工增加200

--if-then-elsif then-else
--输入雇员编号,如果该雇员的职位是PRESIDENT,就将工资增加1000,
--如果该雇员的职位是MANAGER,就将工资增加500,其他职位员工增加200
create or replace procedure sp_pro8(spNo number) is
v_job emp.job%type;
begin
select job into v_job from emp where empno=spNo;
if v_job='PRESIDENT' then
update emp set sal=sal+1000 where empno=spNo;
elsif v_job='MANAGER' then
update emp set sal=sal+500 where empno=spNo;
else
update emp set sal=sal+200 where empno=spNo;
end if;
end;

================================================================


--循环语句(3种)

PL/SQL 条件分支(一)


--1. loop开头 end loop结尾,类似于do...while,至少执行一次
--案例:有一张users表,两个字段(id,name),编写过程,循环添加10个用户到表中,编号从1开始
create table users(--建表
  id number,
  name varchar2(40)
);


create or replace procedure sp_pro9(spName varchar2) is
v_num number:=1;
begin
loop
  insert into users values (v_num,spName);
  --判断是否要退出循环
  exit when v_num=10;
  --自增
  v_num:=v_num+1;
end loop;
end;

------------------------------------------------------

在sql/plus中进行测试

exec sp_pro9('你好');

输出结果为:

ID NAME
-- -----
 1 你好
 2 你好
 3 你好
 4 你好
 5 你好
 6 你好
 7 你好
 8 你好
 9 你好
10 你好

------------------------------------------------------------

2.while循环

PL/SQL 条件分支(一)

--2.while循环
--条件为true时执行循环体语句,while循环以while...loop开始,以end loop结束
--案例:有一张users表,两个字段(id,name),编写过程,循环添加10个用户到表中,编号从11开始
create or replace procedure sp_pro11(spName varchar2) is
v_num number:=11;
begin
while v_num<=20 loop
--执行部分
  insert into users values (v_num,spName);
  v_num:=v_num+1;
end loop;
end;

----------------------------------------------------------------------------------------

3.for循环

PL/SQL 条件分支(一)

--3.for循环
--案例:有一张users表,两个字段(id,name),编写过程,循环添加10个用户到表中,编号从21开始
create or replace procedure sp_pro12(spName varchar2) is
begin
  for i in 21..30 loop
  insert into users values (i,spName);
  end loop;
end;

-------------------------------------------------------------------------------------------------