Oracle数据库---包
--根据员工号或员工姓名获取员工的信息
--根据员工号或员工姓名删除员工的信息
--创建包规范
create or replace package overload_pkg
is
function get_info(eno number) return emp%rowtype;
function get_info(name varchar2) return emp%rowtype;
procedure del_emp(eno number);
procedure del_emp(name varchar2);
end;
--创建包体
create or replace package body overload_pkg
is
function get_info(eno number) return emp%rowtype
is
emp_record emp%rowtype;
begin
select * into emp_record from emp where empno = eno;
return emp_record;
exception
when no_data_found then
raise_application_error(-20020,'不存在此员工!');
end;
function get_info(name varchar2) return emp%rowtype
is
emp_record emp%rowtype;
begin
select * into emp_record from emp where ename = name;
return emp_record;
exception
when no_data_found then
raise_application_error(-20020,'不存在此员工!');
end;
procedure del_emp(eno number)
is
begin
delete from emp where empno = eno;
if sql%notfound then
raise_application_error(-20020,'不存在此员工');
end if;
end;
procedure del_emp(name varchar2)
is
begin
delete from emp where ename = name;
if sql%notfound then
raise_application_error(-20020,'不存在此员工');
end if;
end;
end;
--调用
--根据员工号查询员工信息
declare
emp_record emp%rowtype;
e_no_emp exception;
pragma exception_init(e_no_emp,-20020);
begin
emp_record:= overload_pkg.get_info(&no);
dbms_output.put_line('员工号:'||emp_record.empno||'姓名:'||emp_record.ename||'工资:'||emp_record.sal);
exception
when e_no_emp then
dbms_output.put_line(sqlerrm);
end;
--根据员工姓名查询员工信息
declare
emp_record emp%rowtype;
e_no_emp exception;
pragma exception_init(e_no_emp,-20020);
begin
emp_record:= overload_pkg.get_info('&name');
dbms_output.put_line('员工号:'||emp_record.empno||'姓名:'||emp_record.ename||'工资:'||emp_record.sal);
exception
when e_no_emp then
dbms_output.put_line(sqlerrm);
end;
--根据员工号删除员工信息
declare
e_no_emp exception;
pragma exception_init(e_no_emp, -20020);
begin
overload_pkg.del_emp(&no);
commit;
exception
when e_no_emp then
dbms_output.put_line(sqlerrm);
rollback;
end;
select * from emp;
--根据员工的姓名删除员工的信息
declare
e_no_emp exception;
pragma exception_init(e_no_emp, -20020);
begin
overload_pkg.del_emp('&name');
commit;
exception
when e_no_emp then
dbms_output.put_line(sqlerrm);
rollback;
end;
推荐阅读
-
随机生成八位优惠码并保存至Mysql数据库
-
Windows 64 位 mysql 5.7以上版本包解压中没有data目录和my-default.ini及服务无法启动的快速解决办法(问题小结)
-
Eclipse怎么打开数据库?Eclipse连接oracle等数据库的教程
-
微软Win7/Win8.1/Win10系统工具包Sysinternals(15.7)下载
-
基于Python的SQL Server数据库实现对象同步轻量级
-
如何区分SQL数据库中的主键与外键
-
Win10安装VS2013中文语言包安装失败问题汇总
-
深入SQL Server 跨数据库查询的详解
-
Oracle 安装和卸载问题收集(集合篇)第1/6页
-
Oracle10g 安装方法