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的作用
可以簡化應用設計、提高應用性能、實現信息隱藏、子程序重載