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