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