生活随笔
收集整理的這篇文章主要介紹了
[Oracle]高效的PL/SQL程序设计(三)--Package的优点
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
使用Package的優點在于提供了必需的程序設計結構, 促進了模塊化編程設計, 最重要的是Package斷開了依賴鏈, 使得對某個數據庫模式的改動不會導致整個模式的無效,從而避免了昂貴的重編譯!
????? 例如: 存在table t , procedure p1 p2, view v, function f, 它們之間引用關系如下:
Sql代碼 ?
select?name,type,referenced_name,referenced_type?from?user_dependencies??where?referenced_owner='SCOTT'??order?by?name;?? ?
Text代碼 ?
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)就全部無效, 需要重新編譯(如果代碼很復雜, 就會有較大的消耗)
Sql代碼 ?
select?user_objects.object_name,user_objects.object_type,user_objects.status?from?user_objects?? ?
Text代碼 ?
F???????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
Java代碼 ?
select?name,type,referenced_name,referenced_type?from?user_dependencies??where?referenced_owner='SCOTT'??order?by?name;?? ?
Text代碼 ?
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是有效的
Sql代碼 ?
select?user_objects.object_name,user_objects.object_type,user_objects.status?from?user_objects?? ?
Text代碼 ?
P1????PACKAGE?BODY?????????????????????????INVALID??P2????PACKAGE?BODY?????????????????????????VALID??P1????PACKAGE?????????????????????????????????????VALID???P2????PACKAGE?????????????????????????????????????VALID??T??????TABLE???????????????????????????????????????????VALID??V??????VIEW??????????????????????????????????????????????INVALID?? ?
(轉載自:http://fhuan123.iteye.com/blog/659366)
總結
以上是生活随笔為你收集整理的[Oracle]高效的PL/SQL程序设计(三)--Package的优点的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。