Oracle笔记 十三、PL/SQL面向对象之package
2015-10-12 22:20
495 查看
--将方法和过程用包定义
createorreplacepackagepkg_emp
as
--输入员工编号查询出员工信息
procedurepro_findInfo(
in_empnoemp2.empno%type,
out_nameoutemp2.ename%type,
out_saloutemp2.sal%type
);
--根据部门编号修改本部门员工工资
procedurepro_editInfo(
in_emp_recordemp2%rowtype,
out_flagoutboolean
);
--输入新员工信息并保存到数据库
procedurepro_addInfo(
in_emp_new_recordemp2%rowtype
);
--统计工资信息
functionfun_sum(
num_anumber,
num_bnumber
)returnnumber;
endpkg_emp;
--实现包
createorreplacepackagebodypkg_emp
as
--输入员工编号查询出员工信息
procedurepro_findInfo(
in_empnoemp2.empno%type,
out_nameoutemp2.ename%type,
out_saloutemp2.sal%type
)
as
begin
selectename,salintoout_name,out_salfromemp2whereempno=in_empno;
endpro_findInfo;
--根据部门编号修改本部门员工工资
procedurepro_editInfo(
in_emp_recordemp2%rowtype,
out_flagoutboolean
)
is
begin
updateemp2setsal=in_emp_record.salwheredeptno=in_emp_record.deptno;
out_flag:=true;
/*exception
whenno_data_foundthen
out_flag:=false;
commit;*/
if(sql%rowcount<1)then
out_flag:=false;
else
out_flag:=true;
commit;
endif;
endpro_editInfo;
--输入新员工信息并保存到数据库
procedurepro_addInfo(
in_emp_new_recordemp2%rowtype
)
as
temp_sqlvarchar2(200);
begin
temp_sql:='insertintoemp2(empno,ename,sal,comm,deptno)values(:1,:2,:3,:4,:5)';
executeimmediatetemp_sqlusingin_emp_new_record.empno,in_emp_new_record.ename,
in_emp_new_record.sal,in_emp_new_record.comm,in_emp_new_record.deptno;
commit;
end;
--统计工资信息
functionfun_sum(
num_anumber,
num_bnumber
)returnnumber
is
begin
returnnum_a+num_b;
endfun_sum;
endpkg_emp;
--测试1
declare
out_nameemp2.ename%type;
out_salemp2.sal%type;
begin
pkg_emp.pro_findInfo(7369,out_name,out_sal);
dbms_output.put_line(out_name);
dbms_output.put_line(out_sal);
end;
--测试2
select*fromemp2;
declare
in_emp_recordemp2%rowtype;
flagboolean;
begin
in_emp_record.deptno:=&部门编号;
in_emp_record.sal:=&员工工资;
pkg_emp.pro_editInfo(in_emp_record,flag);
if(flag=false)then
dbms_output.put_line('no');
else
dbms_output.put_line('yes');
endif;
end;
--测试3
declare
new_emp_recordemp2%rowtype;
begin
new_emp_record.empno:=&员工编号;
new_emp_record.ename:=&姓名;
new_emp_record.sal:=&工资;
new_emp_record.comm:=&奖金;
new_emp_record.deptno:=&部门编号;
pkg_emp.pro_addInfo(new_emp_record);
end;
--测试4
declare
sum_empnumber;
begin
selectpkg_emp.fun_sum(sal,nvl(comm,0))intosum_empfromemp2
whereempno=&员工编号;
dbms_output.put_line('员工总工资:'||sum_emp);
end;
相关文章推荐
- Oracle笔记 十二、PL/SQL 面向对象oop编程
- Oracle笔记 十一、PL/SQL函数和触发器
- Oracle笔记 十、PL/SQL存储过程
- Oracle笔记 九、PL/SQL 游标的使用
- Oracle笔记 八、PL/SQL跳转/判断/循环语句块
- Oracle笔记 六、PL/SQL简单语句块、变量定义
- Oracle笔记 七、PL/SQL 异常处理
- Oracle笔记 五、创建表、约束、视图、索引、序列、同义词、表空间
- Oracle笔记 四、增删改、事务
- Oracle笔记 三、function 、select
- Oracle笔记 二、常用dba命令行
- Oracle 死锁的检测查询及处理
- Oracle笔记 一、oracle的安装、sqlplus的使用
- Java 联系Oracle 数据库
- oracle之分组函数、数字函数、字符函数、转换函数和日期函数
- Hibernate在oracle中ID增长的两种方式
- oracle各种sql报错汇总
- Oracle RAC 11g 安装测试问题小结(还未测试成功)
- oracle回顾(一)
- oracle回顾(一)