oracle中的function 、procedure、packages、package bodies比較


1  function和procedure的區別

1).可以理解函數是存儲過程的一種 2).函數可以沒有參數,但是一定需要一個返回值,存儲過程可以沒有參數,不需要返回值 3).函數return返回值沒有返回參數模式,存儲過程通過out參數返回值, 如果需要返回多個參數則建議使用存儲過程 4).在sql數據操縱語句中只能調用函數而不能調用存儲過程, 5).function必須有返回值,並且只能有一個返回值; 6).procedur不叫返回值,叫帶出,可以帶出多個值; 7).packages、package、bodies是同時存在的,packages可包括function,procedure 8).procedure和function可以單獨存在,也可以放到bodies中.

2  packages、與packagebodies比較

      定義:packae是一種將過程、函數和數據結構捆綁在一起的容器;           由兩個部分組成:外部可視包規范,包括函數頭,過程頭,和外部可視數據結構;           另一部分是包主體(package body),包主體包含了所有被捆綁的過程和函數的聲明、執行、異常處理部分。       簡單說就是packages中只有各個方法的定義,bodies中涉及具體的實現.       所以 packages和packagebodies是一體的,必須同時存在.如果要外部調用的,就在package里聲明一下,包內調用的,只要在body里寫就行了。       package可包括function,procedure.       需要先創建package(也就是包的定義),再創建body。       增加包中的過程或者修改包中過程的輸入參數個數等也是要先改package再改body

3  package的作用

      可以簡化應用設計、提高應用性能、實現信息隱藏、子程序重載


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM