1. --pl/sql学习第三章********************************************* 
  2. --使用环境  oracle10.2 ;ide;pl/sql developer ;schema:scott; table:emp 
  3. --控制语句 顺序 判断 循环 
  4. --条件分支语句 
  5. --1 if .. then end if  单一条件分支 
  6. --2 if .. then ..else  end if  二重条件分支 
  7. --3 if .. then .. elsif ..then...else ..end if  多重条件分支 
--每个结构给出一个案例作为参考
--案例1  编写一个带有条件分支的过程,输入员工号,如果工资低于2000就增加10%,查询条件皆为员工号
 
  1. create or replace procedure l_pro1(lno number) is 
  2. v_sal emp.sal%type; 
  3. v_newsal emp.sal%type; 
  4. v_name emp.ename%type; 
  5. begin 
  6. select ename,sal into v_name,v_sal from emp where empno=lno; 
  7. dbms_output.put_line('员工'||v_name||'的工资是'||v_sal); 
  8. --开始判断是否到2000元,怎么包含if语句块? 
  9. if v_sal<=2000 then  
  10. v_newsal:=v_sal*1.1; 
  11. dbms_output.put_line('由于工资低于2000元,所以要张薪资到'||v_newsal); 
  12. --进行更新操作 
  13. update emp set sal=v_newsal where empno=lno; 
  14. end if ; 
  15. end;  
 
--案例2  二重条件分支 查询员工的补助原来有增加100 没有的直接给200
 
  1. create or replace procedure l_pro2(lno number) is  
  2. v_comm emp.comm%type; 
  3. begin 
  4. select comm into v_comm from emp where empno=lno; 
  5. --判断语句 
  6. if v_comm=0 then  
  7. --注意等号的写法 
  8. v_comm:=200; 
  9. --打印和更新操作 
  10. dbms_output.put_line('此员工原来没有补贴'); 
  11. update emp set comm=v_comm where empno=lno; 
  12. else  
  13. dbms_output.put_line('此员工原来有补贴'||v_comm||'元'); 
  14. v_comm:=100+v_comm; 
  15. update emp set comm=v_comm where empno=lno;  
  16. end if; 
  17. end
--案例3 多重条件分支 根据员工的不同职位加薪水,president加1000,manager加500,其他员工加200
 
  1. create or replace procedure l_pro3(lno number) is 
  2. v_sal emp.sal%type; 
  3. v_job emp.job%type; 
  4. begin  
  5. select sal,job into v_sal,v_job from emp where empno=lno; 
  6. --判断结构 
  7. if v_job='PRESIDENT' then  
  8. v_sal:=v_sal+1000; 
  9. dbms_output.put_line('此员工'||lno||'加薪水后'||v_sal||'元'); 
  10. update emp set sal=v_sal where empno=lno; 
  11. --再次判断 
  12. elsif v_job='MANAGER'  then  
  13. v_sal:=v_sal+500; 
  14. dbms_output.put_line('此员工'||lno||'加薪水后'||v_sal||'元'); 
  15. update emp set sal=v_sal where empno=lno;  
  16. else  
  17. v_sal:=v_sal+200; 
  18. dbms_output.put_line('此员工'||lno||'加薪水后'||v_sal||'元'); 
  19. update emp set sal=v_sal where empno=lno;   
  20. end if; 
  21. end
 
--容易出错的几个地方
--tips:
--1 赋值号的写法‘ := ’不是‘=’
--2 等号和不等号 ‘=’和‘<>'
--3 if 最后一定要加 end if;
--4 elsif的写法 别写成 else if  
--5 数据类型要对应 比如说sal,job into v_sal,v_job 前后一定要匹配好
 
数据类型知晓,明白声明方法和语法结构之后,在学习各种语句之后就可以开始写自己的程序了。
部分引用自传智播客oracle教程。