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;
