相同點:存儲過程和函數都是為了可重復的執行操作數據庫的sql語句的集合。
1)存儲過程和函數都是一次編譯,就會被緩存起來,下次使用就直接命中已經編譯好的sql語句, 不需要重復使用。減少網絡交互,減少網絡訪問流量。
不同點:標識符不同,函數的標識符是function,存儲過程是proceduce。
1)函數中有返回值,且必須有返回值,而過程沒有返回值,但是可以通過設置參數類型(in,out) 來實現多個參數 或者返回值。
2)存儲函數使用select調用,存儲過程需要使用call調用。
3)select語句可以在存儲過程中調用,但是除了select..into之外的select語句都不能在函數中使用。
4)通過in out參數,過程相關函數更加靈活,可以返回多個結果。