Oracle笔记 十三、PL/SQL面向对象之package
2012-09-06 15:20
441 查看
--将方法和过程用包定义
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面向对象之package
- Oracle笔记 十三、PL/SQL面向对象之package
- Oracle笔记 十三、PL/SQL面向对象之package
- Oracle笔记 十三、PL/SQL面向对象之package
- Oracle笔记 十三、PL/SQL面向对象之package
- Oracle笔记 十三、PL/SQL面向对象之package
- Oracle笔记 十三、PL/SQL面向对象之package
- Oracle笔记 十二、PL/SQL 面向对象oop编程
- Oracle笔记 十二、PL/SQL 面向对象oop编程
- Oracle笔记 十二、PL/SQL 面向对象oop编程
- OraclePL/SQL面向对象之package
- Oracle笔记 十二、PL/SQL 面向对象oop编程
- Oracle笔记 十二、PL/SQL 面向对象oop编程
- Oracle笔记 十二、PL/SQL 面向对象oop编程
- Oracle笔记 十二、PL/SQL 面向对象oop编程
- Oracle笔记 十二、PL/SQL 面向对象oop编程
- Oracle笔记 七、PL/SQL 异常处理
- Oracle笔记 六、PL/SQL简单语句块、变量定义
- Oracle EBS - SQL&PL/SQL: 笔记1
- 【数据库学习笔记】Oracle_03_PL/SQL深入:游标编程,自定义异常