PLSQL基礎(五)包

來源:互聯網
上載者:User

包可將一些有聯絡的對象放在其內部。任何能在塊定義部分出現的對象都可以在包中出現。這些對象包括儲存過程,函數,遊標,自訂類型(例如PLSQL表和記錄)和變數。我們在其他的PLSQL塊中引用包中的這些對象,也就是說,包為PLSQL提供了全域變數.

 

 

一不包由兩個獨立部分組成---包頭和包體。

定義一個包,要分別定義包頭和包體。

 

eg

CREATE OR REPLACE PACKAGE AuthsPack AS

 

PROCEDURE QuerySalary

(

          p_code auths.author_code%TYPE,

          P_sALARY OUT auths.salary%TYPE

);

 

PROCEDURE InsertAuthor

(

    p_Code auths.author_code%TYPE,

    p_Name auths.name%TYPE,

    p_Sex auths.sex%TYPE,

    p_Birthdate auths.birthdate%TYPE,

    p_entry_date_time auths.entry_datetime%TYPE

);

 

END AuthsPack;

 

AuthsPack包中有兩個預存程序,QueueSalary用來查詢指定作家的工資,InsertAuthor用來向AUTHS表插入記錄.

 

定義包體:

 

CREATE OR REPLACE PACKAGE BODY AuthsPack IS

 

PROCEDURE QuerySalary(

    p_code auths.author_code%TYPE,

    p_Salary OUT auths.salary%TYPE

)

AS

BEGIN

     SELECT salary into p_Salary FROM auths WHERE author_code = p_code;

END QuerySalary;

 

 

PROCEDURE InsertAuthor

(

    p_Code auths.author_code%TYPE,

    p_Name auths.name%TYPE,

    p_Sex auths.sex%TYPE,

    p_Birthday auths.birthday%TYPE,

    p_entry_date_time auths.entry_date_time%TYPE

)

AS

BEGIN

    INSERT INTO ...;

END InsertAuthor;

 

END AuthsPack;

 

 

在包中定義的任意對象都可以在保外使用,只是在引用該對象前用包名做首碼。

在包的內部,預存程序和函數可被重載,這意味著有多個儲存過程或函數可以使用同一個名稱,但是參數不能相同。這樣允許不同的參數調用同意個名字的過程或函數.

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.