oracle的控制語句if和循環語句loop while for


pl/sql的控制結構
if-then if-then-else if-then-elsif-else

案例1:編寫一個過程,可以輸入一個雇員名,如果該雇員的工資低於2000,就給該雇員工資增加10%

create or replace procedure mypro(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;

 

案例2 編寫一個過程,可以輸入一個雇員名,如果該雇員的補助不是0就在原來的基礎上加100,如果為0則改為200

create or replace procedure mypro(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;

 

案例3:編寫一個過程,可以輸入一個雇員編號人,如果該雇員的職位是president就給他的工資增加1000,如果該雇員
的職位是manager就給他的工資增加500,其他職位的雇員工資增加200.

create or replace procedure mypro(spName 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;

 

pl/sql循環語句

loop是最簡單的循環語句,這種循環語句以loop開頭,以end loop結尾,這種循環至少會被執行一次
案例1 現在有一張表,表結構為用戶id和用戶名

create or replace procedure mypro(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;

 

while循環,至少要執行循環體一次,而對於while循環來說,只有條件為true時,才會執行循環語句

create or replace procedure mypro(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;

 

循環語句-for循環

begin
--只能按照1的步長不斷增加
for i in reverse 1..10 loop
insert into users values(i,'hh');
end loop;
end;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM