夢幻之旅

          DEBUG - 天道酬勤

             :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            671 隨筆 :: 6 文章 :: 256 評論 :: 0 Trackbacks
              PL/SQL中對out,in out參數(shù)使用的?默認形參會復制一份實參的副本,然后在內(nèi)部傳遞,修改等,發(fā)生異常,不會賦值給實參,控制權(quán)交還調(diào)用環(huán)境,而實參值不變,還是調(diào)用前的值。而使用了NOCOPY后,形參將獲得一個指向?qū)崊⒌闹羔槪缓笤趦?nèi)部傳遞,賦值都直接修改實參了,此時如果異常發(fā)生,控制權(quán)交還調(diào)用環(huán)境,但是實參已經(jīng)被修改了。無法還原成調(diào)用前的值。
              對參數(shù)I N使用NOCOPY將會產(chǎn)生編譯錯誤,這是因為參數(shù)I N總是按引用傳遞.
              NOCOPY的主要優(yōu)點是可以提高程序的效率。當我們傳遞大型PL/SQL表時,其優(yōu)越性特別顯著.使用NOCOPY的限制在某些情況下,NOCOPY將被編譯器忽略,這時的參數(shù)仍將按值傳遞。這時,編譯器不會報告編譯錯誤。由于NOCOPY是一個提示項(Hint),編譯器可以決定是否執(zhí)行該項。在下列情況下,編譯器將忽略NOCOPY項:
          1.實參是索引表(index-by table)的成員時。如果該實參是全表,則該限制不起作用。
          2.實參被強制指定精度,比例或NOT NULL時。該限制將不適用按最大長度強制的字符串參數(shù)。
          3.實參和形參都是記錄類型,二者是以隱含方式或使用了%ROWTYPE類型聲明時,作用在對應(yīng)字段的強制說明不一致。
          4.傳遞實參需要隱式類型轉(zhuǎn)換時。
          5.子程序涉及到遠程過程調(diào)用(PRC)。遠程過程調(diào)用就是跨越數(shù)據(jù)庫對遠程服務(wù)器的過程調(diào)用。
          posted on 2008-01-21 15:23 HUIKK 閱讀(2764) 評論(3)  編輯  收藏 所屬分類: DataBase

          評論

          # re: ORACLE NOCOPY 2009-07-21 13:59 ffsd
          Pass-by-value subroutines define formal parameters using an IN mode
          only.  回復  更多評論
            

          # re: ORACLE NOCOPY 2009-07-21 14:00 ffsd
          In mode parameters still use 'pass-by-value'  回復  更多評論
            

          # re: ORACLE NOCOPY 2013-12-20 11:49 無憂旅行社
          子程序涉及到遠程過程調(diào)用(PRC)。遠程過程調(diào)用就是跨越數(shù)據(jù)庫對遠程服務(wù)器的過程調(diào)用
          這點很牛X


          如果有旅游的打算請聯(lián)系我:http://www.51khly.com/  回復  更多評論
            

          主站蜘蛛池模板: 扶风县| 朝阳市| 乐都县| 南召县| 临洮县| 上蔡县| 西盟| 东莞市| 平罗县| 淄博市| 康马县| 凉山| 鄯善县| 肥乡县| 姜堰市| 淄博市| 寿光市| 大英县| 开封县| 桂东县| 台中市| 湟中县| 丹江口市| 芒康县| 东兰县| 桂东县| 筠连县| 莆田市| 景宁| 泸定县| 灯塔市| 宜阳县| 昭苏县| 无棣县| 道孚县| 黄大仙区| 吉林省| 仁布县| 若羌县| 和林格尔县| 吴江市|