Oracle程式包

zhenghaishu發表於2014-08-10
Oracle程式包

    程式包用於將邏輯相關的PL/SQL塊或元素(變數、常量、過程、函式等)組織在一起,作為一個完整的單元儲存在資料庫中,用包名稱來標識程式包。程式包類似於物件導向中的類。
    程式包由兩部分構成:規範(specification)和主體(body)。程式包規範就是包說明,對包的所有部件進行一個簡單的宣告。其中的函式、過程、變數、常量和遊標都是公共的,可以被外界應用程式在執行過程中呼叫。主體則是函式和儲存過程的具體實現。

1 建立規範
create or replace package pkg_emp as
  function getEmpCount return number;
  procedure update_sal;
  procedure insert_emp(emp_name in varchar2, dept_no in number, original_count out number, current_count out number);
end pkg_emp;
/

Package created.

2 建立主體
create or replace package body pkg_emp as
  function getEmpCount return number as
  begin
    declare emp_count number;
    begin
      select count(1) into emp_count from emp_copy;
      return emp_count;
    end;
  end getEmpCount;

  procedure update_sal as
  begin
    update emp set sal = sal * 3;
    commit;
  end update_sal;

  procedure insert_emp(emp_name in varchar2, dept_no in number, original_count out number, current_count out number) as
  begin
    declare max_empno number;
    begin
      if(emp_name is null or length(emp_name) = 0) then
        return;
      end if;

      if(dept_no != 60) then
        return;
      end if;

      select count(1) into original_count from emp_copy;
      select max(empno) into max_empno from emp_copy;
      insert into emp_copy(empno, ename, deptno) values(max_empno + 1, emp_name, dept_no);
      select count(1) into current_count from emp_copy;
    end;
  end insert_emp;

end pkg_emp;
/

Package body created.

3 呼叫程式包
select pkg_emp.getEmpCount from dual;

GETEMPCOUNT
-----------
     16






來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29485627/viewspace-1248731/,如需轉載,請註明出處,否則將追究法律責任。

相關文章