1. 程式人生 > >PL/SQL包(Package)

PL/SQL包(Package)

create func 邏輯 cal 緩沖 定義 typename exceptio public

包(Package)的主要作用是用於邏輯組合相關的PL/SQL類型,一旦創建了包,包就會被存儲在Oracle數據庫中。

包由以下兩部分組成:

(1)包規範(Specification):主要是包的一些定義信息,不包含具體的實現,包含類型(type),記錄(record),變量(variable),常量(constant),異常(exception)定義,遊標(cursor)和子程序(function or procedure)的聲明。

(2)包體(Body):包體是對包規範中聲明的子程序的實現部分。

包規範定義了包需要被公開的聲明部分,在創建之後將保存到數據庫用戶對應的schema中。

語法 create

or replace package package_name is

  -- Author  : HP
  -- Created : 3/19/2018 3:49:59 PM
  -- Purpose : 
  
  -- Public type declarations
  type <TypeName> is <Datatype>;
  
  -- Public constant declarations
  <ConstantName> constant <Datatype> := <Value>;

  -- Public variable declarations
<VariableName> <Datatype>;

 CURSOR cursor_name RETURN return_type; --定義一個遊標聲明
exception_name  EXCEPTION;   --定義一個異常
-- Public function and procedure declarations function <FunctionName>(<Parameter> <Datatype>) return <Datatype>;

end test_package;

包體:包體中實現包規範的代碼是公開的。

   不在包規範中聲明的代碼是私有的,只能在本包體內被引用。

 1 create or replace package body test_package is
 2 
 3   -- Private type declarations
 4   type <TypeName> is <Datatype>;
 5   
 6   -- Private constant declarations
 7   <ConstantName> constant <Datatype> := <Value>;
 8 
 9   -- Private variable declarations
10   <VariableName> <Datatype>;
11 
12   -- Function and procedure implementations
13   function <FunctionName>(<Parameter> <Datatype>) return <Datatype> is
14     <LocalVariable> <Datatype>;
15   begin
16     <Statement>;
17     return(<Result>);
18   end;
19 
20 begin
21   -- Initialization 初始化代碼塊
22   <Statement>;
23 end test_package;

當包第一次被調用時,將進行初始化,將包從硬盤調到內存中,放到系統全局區的共享緩沖池中,包的運行狀態則被放入用戶全局區的會話存儲區中。

包從第一次調用被初始化,一直到會話結束才釋放其運行狀態,因此包中的變量具有會話級的作用域

當會話第一次使用某個包時,會對包進行初始化,此時會初始化所有包級別的數據,對聲明中的常量或變量指定賦默認值,初始化單元中的代碼塊(即begin-end部分的語句塊)

PL/SQL包(Package)