博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle笔记 十三、PL/SQL面向对象之package
阅读量:6207 次
发布时间:2019-06-21

本文共 2535 字,大约阅读时间需要 8 分钟。

--将方法和过程用包定义
create or replace package pkg_emp
as
--输入员工编号查询出员工信息
procedure pro_findInfo(
in_empno emp2.empno%type,
out_name out emp2.ename%type,
out_sal out emp2.sal%type
);
--根据部门编号修改本部门员工工资
procedure pro_editInfo(
in_emp_record emp2%rowtype,
out_flag out boolean
);
--输入新员工信息并保存到数据库
procedure pro_addInfo(
in_emp_new_record emp2%rowtype
);
--统计工资信息
function fun_sum(
num_a number,
num_b number
) return number;
end pkg_emp;
 
--实现包
create or replace package body pkg_emp
as
--输入员工编号查询出员工信息
procedure pro_findInfo(
in_empno emp2.empno%type,
out_name out emp2.ename%type,
out_sal out emp2.sal%type
)
as
begin
select ename, sal into out_name, out_sal from emp2 where empno = in_empno;
end pro_findInfo;
 
--根据部门编号修改本部门员工工资
procedure pro_editInfo(
in_emp_record emp2%rowtype,
out_flag out boolean
)
is
begin
update emp2 set sal = in_emp_record.sal where deptno = in_emp_record.deptno;
out_flag := true;
/*exception
when no_data_found then
out_flag := false;
commit;*/
if (sql%rowcount < 1) then
out_flag := false;
else
out_flag := true;
commit;
end if;
end pro_editInfo;
 
--输入新员工信息并保存到数据库
procedure pro_addInfo(
in_emp_new_record emp2%rowtype
)
as
temp_sql varchar2(200);
begin
temp_sql := 'insert into emp2(empno, ename, sal, comm, deptno) values(:1, :2, :3, :4, :5)';
execute immediate temp_sql using in_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;
 
--统计工资信息
function fun_sum(
num_a number,
num_b number
) return number
is
begin
return num_a + num_b;
end fun_sum;
end pkg_emp;
 
 
--测试1
declare
out_name emp2.ename%type;
out_sal emp2.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 * from emp2;
declare
in_emp_record emp2%rowtype;
flag boolean;
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');
end if;
end;
 
--测试3
declare
new_emp_record emp2%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_emp number;
begin
select pkg_emp.fun_sum(sal, nvl(comm, 0)) into sum_emp from emp2
where empno = &员工编号;
dbms_output.put_line('员工总工资:' || sum_emp);
end;
本文转自hoojo博客园博客,原文链接:http://www.cnblogs.com/hoojo/archive/2011/05/03/2035420.html,如需转载请自行联系原作者
你可能感兴趣的文章
java获取classpath以外的路径
查看>>
Linux下安全审计工具 lynis 使用说明
查看>>
ECharts整合HT&#160;for&#160;Web的网络拓扑图应用
查看>>
工程项目管理需要注意哪些问题
查看>>
Qt QTcpSocket使用总结
查看>>
是银弹吗?业务基线方法论
查看>>
oracle 11g DG 搭建
查看>>
域名跳转
查看>>
ebtables之BROUTING和PREROUTING的redirect的区别
查看>>
源于十年来的点滴积累——《变革中的思索》印行出版
查看>>
微软最新GDI漏洞MS08-052安全解决方案
查看>>
gitlab 2.7版本升级到2.8
查看>>
亮剑:PHP,我的未来不是梦(11)
查看>>
linux用户空间和内核exit的语义--linux没有线程
查看>>
HTML <td> 标签的 colspan 属性
查看>>
Digital River拉来Netconcepts站台 亚太营销服务升级
查看>>
BeanShell自动装箱拆箱
查看>>
**加密解密基础、PKI及SSL、创建私有CA**
查看>>
python 脚本学习(二)
查看>>
当javaScript从入门到提高前需要注意的细节:变量部分
查看>>