日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

[Oracle]高效的PL/SQL程序设计(三)--Package的优点

發布時間:2024/4/15 数据库 63 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [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的优点的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。