當項目越來越大的時候,數據庫中可能會出現成百上千的函數,存儲過程之類的,爲了方便管理,Oracle提倡使用程序包的管理機制,實現業務模塊隔離,方便管理。
Oracle 程序包的創建
程序包的創建有點像JAVA中接口的定義,只有聲明,沒有實現。
語法:create or replace package 包名 as 函數定義...存儲過程定義 end 包名;
舉例:
create or replace package pkg_hbk as
function computer(num1 number,num2 number) return number;
procedure pro_add(tel in varchar2,name out varchar2);
end pkg_hbk;
如上程序包,包名爲pkg_hbk,包中含有一個函數computer,一個存儲過程pro_add
,運行完,在Oracle sql Developer 刷新出現
程序包需要配合包體實現。
Oracle 包體實現
語法: create or replace package body 包名(名字要一致) as 包體實現 end 包名;
舉例:
create or replace package body pkg_hbk as
function computer(num1 number,num2 number) return number as
begin
return num1+num2;
end;
procedure pro_add(tel in varchar2,name out varchar2) as
begin
name:=tel||'測試';
end;
end pkg_hbk;
包體創建完後,刷新Oracle SQL developer,多出了package body
Oracle包函數,包存儲過程調用
調用使用包名.函數名調用函數
使用包名.存儲過程名調用存儲過程。
set serveroutput on;
begin
dbms_output.put_line('2+4='||pkg_hbk.computer(2,4));
end;
運行輸出:
匿名塊已完成
2+4=6
set serveroutput on;
declare name varchar2(30);
begin
pkg_hbk.pro_add('18679758769',name);
dbms_output.put_line('調用存儲過程:'||name);
end;
輸出:
匿名塊已完成
調用存儲過程:18679758769測試
程序包的刪除
語法:drop package 包名;
drop package pkg_hbk;
運行輸出:
package PKG_HBK已刪除。