[Oracle]高效的PL/SQL程式設計(三)–Package的優點

來源:互聯網
上載者:User

 

      使用Package的優點在於提供了必需的程式設計結構, 促進了模組化編程設計, 最重要的是Package斷開了依賴鏈, 使得對某個資料庫模式的改動不會導致整個模式的無效,從而避免了昂貴的重編譯!

      例如: 存在table t , procedure p1 p2, view v, function f, 它們之間參考關聯性如下:

select name,type,referenced_name,referenced_type from user_dependencies
where referenced_owner='SCOTT'
order by name;F       FUNCTION            T     TABLE
P1    PROCEDURE       V     VIEW    P2    PROCEDURE       P1   PROCEDURE
V       VIEW                      T    TABLE

     當alter table t add y number時, 依賴於t的所有對象(包括傳遞依賴的對象, 即p1依賴於t, p2依賴於p1)就全部無效, 需要重新編譯(如果代碼很複雜, 就會有較大的消耗)

select user_objects.object_name,user_objects.object_type,user_objects.status from user_objectsF       FUNCTION                       INVALID
P1    PROCEDURE                  INVALID   P2    PROCEDURE                  INVALID
T      TABLE                               VALID
V      VIEW                                 INVALID

    如果使用程式包之後table t , package pkg1,pkg2, view v, 可以發現PACKAGE BODY是依賴於PACKAGE, 而PKG2依賴於PKG1的PACKAGE, 而不是PACKAGE BODY

select name,type,referenced_name,referenced_type from user_dependencies
where referenced_owner='SCOTT'
order by name;PKG1    PACKAGE BODY       V             VIEW     PKG1    PACKAGE BODY       PKG1     PACKAGE     PKG2    PACKAGE BODY       PKG2     PACKAGE     PKG2    PACKAGE BODY       PKG1     PACKAGE V            VIEW                            T              TABLE

    當alter table t add y number時,會發現PK1的PACKAGE BODY會無效, 但是PKG2的PACKAGE BODY是有效

select user_objects.object_name,user_objects.object_type,user_objects.status from user_objects   P1    PACKAGE BODY                         INVALID   P2    PACKAGE BODY                         VALID   P1    PACKAGE                                     VALID

   P2    PACKAGE                                     VALID
T      TABLE                                           VALID
V      VIEW                                              INVALID

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.