模塊中的參數問題

一、定義參數
  在模塊頭部定義參數
  如:procedure proc_name(para_name in datatype [{:=value | default value}] [, ...])
  1、para_name爲參數名
  2、in 爲參數模式,參數模式有in,out,in out
  3、datatype爲數據類型,該數據類型不受約束,也即只有數據類型的名稱,不能有數據長度,如:varchar2。
  4、:=value 爲參數的默認值,也可以使用default value定義默認值。
二、形參和實參
  形參爲在模塊頭部的參數列表中聲明的參數的名稱。
  實參爲在調用模塊時放置在參數列表中的真實值或者表達式。
  形參只能存在於模塊中,可以把形參看做佔位符,在執行模塊時,實參將替換形參。
  形參和對應的實參的數據類型必須能夠兼容。
三、參數模式
  1、in
    只能通過in模式的參數向模塊傳入數據,但不能通過in模式的參數傳出數據。
    模塊可以讀取in模式參數的值,不能修改參數的值。
    in模式爲默認的參數模式,如果不寫即爲in模式參數。
    可以使用:=或者default爲in模式參數定義初始值。
    in模式參數對應的實參可以使變量,常量,直接值,或者表達式。
  2、out
    out模式爲只寫,可以通過out模式參數,模塊向調用程序傳出數據,模塊可以修改out模式參數的數值,但不能讀取參數的值。
    out模式參數在模式成功結束之前,沒有任何值(除非使用nocopy提示),在模塊的執行過程中,針對out模式參數所做的任何賦值,實際上都是在對一個副本進行操作。在模 

塊成功執行之後,這個副本的值纔會真正傳遞給out模式參數。
    規則:不能把out模式參數的值賦值給其他變量
          不能爲out模式參數提供初始值
          如果模塊執行異常,任何對out模式參數的賦值操作都會被回滾。(可以在異常處理中爲參數賦值)
          對應於out模式參數的實參只能是變量。
  3、in out
    in out模式的參數是可讀可寫的。
    通過in out模式的參數,可以爲模塊傳入數據,也可以爲調用程序傳出數據。
    規則:不能爲in out模式的參數設置初始值
          與in out模式參數對應的實參只能是變量
四、實參與形參的映射的方法
  1、位置表示法
    在調用模塊時,根據參數的位置進行關聯。也即第n個實參對應第n形參。
  2、命名錶示法
    使用‘=>'連接符顯示地把實參和形參建立關聯。
    使用命名錶示法可以不按照形參的順序
    當有默認值的形參處於沒有默認值的形參之間,且又想不寫該參數的實參,使用其默認值時,要使用命名錶示法
  3、混合法
    既包含位置表示法,又有命名錶示法
    命名錶示法,可以不按照形參的順序,但使用位置表示法的實參必須與形參的位置相對應。
五、初始值
  可以爲in模式的參數定義初始值,不能爲out和in out模式的參數定義初始值。
  使用':='或者default爲參數定義初始值
  在調用模塊時,如果沒有有初始值的參數提供實參,則該參數使用默認值。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章