`
tjmzgn
  • 浏览: 156162 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Oracle 包

阅读更多


包用于逻辑组合相关的PL/SQL类型、项、子程序,它由包规范(create package)和包体(package body)两部分组成。
当建立包时,需要首先建立包规范,然后再建立包体。
====================================================================================================
包规范语法格式:
create or replace package package_name              package_name 是包名,IS 开始的部分用于定义公共组件。                 
is
public type and item declarations
  subprogram specificationsEND package_name;
end;
eg
create or replace package emp_package IS
  g_deptno number(3):=30;    ------公有变量;
  procedure add_employee(eno number,empname varchar2,salary number,dno number default g_deptno);
  procedure fire_employee(eno number);
  function get_sal(eno number) return number;
end emp_package;
==================================================================================================
包体语法格式:
    create or replace package body package_name
    is
    private type and item declareions
    subprogram bodies;
    end package_name;
eg:
create or replace package body emp_package is
function validate_deptno(v_deptno number) return boolean
is
    v_temp int;
begin
select 1 into v_temp from dept where deptno=v_deptno;
return true;
Exception
when no_date_found then
   return false;
end;
procedure add_employee(eno number,empname varchar2,sal number,dno number default g_deptno)
is
begin
if validate_deptno(dno) then
insert into emp(empno,ename,sal,deptno) values (eno,name,salary,dno);
else
raise_application_error(-20010,'不存在该部门');
end if;
end;
function get_sal(eno number) return number
is
v_sal emp.sal%type;
begin
select sal into v_sal from emo where empno=eno;
return v_sal;
Exception
when no_data_found then
    raise_application_error(-20012,'该雇员不存在');
end;
end emp_package;
===========================================================================================================
调用包组件
对于包的私有组件,只能在包内调用,并且可以直接调用;
对于包的公有组件,既可以在包内调用,也可以在其他应用程序中调用,
                 当在其他应用程序中调用包的组件时,必须要加包名作为前缀(包名.组件名)
(a).在同一个包内调用包组件
    当调用同一包内的其他组件时,
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics