您的位置:首页 > 数据库 > Oracle

[oracle]pl/sql --控制语句if..

2014-07-31 00:29 471 查看
--pl/sql学习第三章*********************************************
--使用环境  oracle10.2 ;ide;pl/sql developer ;schema:scott; table:emp
--控制语句 顺序 判断 循环
--条件分支语句
--1 if .. then end if  单一条件分支
--2 if .. then ..else  end if  二重条件分支
--3 if .. then .. elsif ..then...else ..end if  多重条件分支
--每个结构给出一个案例作为参考
--案例1  编写一个带有条件分支的过程,输入员工号,如果工资低于2000就增加10%,查询条件皆为员工号
 
create or replace procedure l_pro1(lno number) is
v_sal emp.sal%type;
v_newsal emp.sal%type;
v_name emp.ename%type;
begin
select ename,sal into v_name,v_sal from emp where empno=lno;
dbms_output.put_line('员工'||v_name||'的工资是'||v_sal);
--开始判断是否到2000元,怎么包含if语句块?
if v_sal<=2000 then
v_newsal:=v_sal*1.1;
dbms_output.put_line('由于工资低于2000元,所以要张薪资到'||v_newsal);
--进行更新操作
update emp set sal=v_newsal where empno=lno;
end if ;
end;

--案例2  二重条件分支 查询员工的补助原来有增加100 没有的直接给200
create or replace procedure l_pro2(lno number) is
v_comm emp.comm%type;
begin
select comm into v_comm from emp where empno=lno;
--判断语句
if v_comm=0 then
--注意等号的写法
v_comm:=200;
--打印和更新操作
dbms_output.put_line('此员工原来没有补贴');
update emp set comm=v_comm where empno=lno;
else
dbms_output.put_line('此员工原来有补贴'||v_comm||'元');
v_comm:=100+v_comm;
update emp set comm=v_comm where empno=lno;
end if;
end;
--案例3 多重条件分支 根据员工的不同职位加薪水,president加1000,manager加500,其他员工加200
create or replace procedure l_pro3(lno number) is
v_sal emp.sal%type;
v_job emp.job%type;
begin
select sal,job into v_sal,v_job from emp where empno=lno;
--判断结构
if v_job='PRESIDENT' then
v_sal:=v_sal+1000;
dbms_output.put_line('此员工'||lno||'加薪水后'||v_sal||'元');
update emp set sal=v_sal where empno=lno;
--再次判断
elsif v_job='MANAGER'  then
v_sal:=v_sal+500;
dbms_output.put_line('此员工'||lno||'加薪水后'||v_sal||'元');
update emp set sal=v_sal where empno=lno;
else
v_sal:=v_sal+200;
dbms_output.put_line('此员工'||lno||'加薪水后'||v_sal||'元');
update emp set sal=v_sal where empno=lno;
end if;
end;
--容易出错的几个地方
--tips:
--1 赋值号的写法‘ := ’不是‘=’
--2 等号和不等号 ‘=’和‘<>'
--3 if 最后一定要加 end if;
--4 elsif的写法 别写成 else if  
--5 数据类型要对应 比如说sal,job into v_sal,v_job 前后一定要匹配好
 
数据类型知晓,明白声明方法和语法结构之后,在学习各种语句之后就可以开始写自己的程序了。
部分引用自传智播客oracle教程。
 
 
本文出自 “orangleliu笔记本” 博客,请务必保留此出处http://blog.csdn.net/orangleliu/article/details/38309421
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  plsql if oracle