區(qū)別:1、存儲(chǔ)函數(shù)的限制比較多,而存儲(chǔ)過(guò)程的限制較少;2、存儲(chǔ)過(guò)程的實(shí)現(xiàn)功能要復(fù)雜些,而存儲(chǔ)函數(shù)的實(shí)現(xiàn)功能針對(duì)性比較強(qiáng);3、存儲(chǔ)函數(shù)必須有一個(gè)返回值,而存儲(chǔ)過(guò)程可以沒(méi)有返回值;4、調(diào)用時(shí)的不同;5、參數(shù)的不同。
鄰水網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),鄰水網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為鄰水上1000家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站建設(shè)要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的鄰水做網(wǎng)站的公司定做!
本教程操作環(huán)境:windows7系統(tǒng)、mysql8版本、Dell G3電腦。
存儲(chǔ)過(guò)程和存儲(chǔ)函數(shù)類似于面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言中的方法,可以簡(jiǎn)化代碼,提高代碼的重用性。本文主要介紹如何創(chuàng)建存儲(chǔ)過(guò)程和存儲(chǔ)函數(shù),以及存儲(chǔ)過(guò)程與函數(shù)的使用、修改、刪除等操作。
存儲(chǔ)過(guò)程與存儲(chǔ)函數(shù)
MySQL中提供存儲(chǔ)過(guò)程與存儲(chǔ)函數(shù)機(jī)制,我們姑且將存儲(chǔ)過(guò)程和存儲(chǔ)函數(shù)合稱為存儲(chǔ)程序。與一般的SQL語(yǔ)句需要先編譯然后立即執(zhí)行不同,存儲(chǔ)程序是一組為了完成特定功能的SQL語(yǔ)句集,經(jīng)編譯后存儲(chǔ)在數(shù)據(jù)庫(kù)中,當(dāng)用戶通過(guò)指定存儲(chǔ)程序的名字并給定參數(shù)(如果該存儲(chǔ)程序帶有參數(shù))來(lái)調(diào)用才會(huì)執(zhí)行。
存儲(chǔ)程序就是一條或者多條SQL語(yǔ)句和控制語(yǔ)句的集合,我們可以將其看作MySQL的批處理文件,當(dāng)然,其作用不僅限于批處理。當(dāng)想要在不同的應(yīng)用程序或平臺(tái)上執(zhí)行相同的功能一段程序或者封裝特定功能時(shí),存儲(chǔ)程序是非常有用的。數(shù)據(jù)庫(kù)中的存儲(chǔ)程序可以看做是面向?qū)幊讨忻嫦驅(qū)ο蠓椒?,它允許控制數(shù)據(jù)的訪問(wèn)方式。
存儲(chǔ)函數(shù)與存儲(chǔ)過(guò)程有如下區(qū)別:
(1)存儲(chǔ)函數(shù)的限制比較多,例如不能用臨時(shí)表,只能用表變量,而存儲(chǔ)過(guò)程的限制較少;存儲(chǔ)過(guò)程的實(shí)現(xiàn)功能要復(fù)雜些,而函數(shù)的實(shí)現(xiàn)功能針對(duì)性比較強(qiáng)。
(2)返回值不同。存儲(chǔ)函數(shù)必須有返回值,且僅返回一個(gè)結(jié)果值;存儲(chǔ)過(guò)程可以沒(méi)有返回值,但是能返回結(jié)果集(out,inout)。
(3)調(diào)用時(shí)的不同。存儲(chǔ)函數(shù)嵌入在SQL中使用,可以在select 存儲(chǔ)函數(shù)名(變量值);存儲(chǔ)過(guò)程通過(guò)call語(yǔ)句調(diào)用 call 存儲(chǔ)過(guò)程名。
(4)參數(shù)的不同。存儲(chǔ)函數(shù)的參數(shù)類型類似于IN參數(shù),沒(méi)有類似于OUT和INOUT的參數(shù)。存儲(chǔ)過(guò)程的參數(shù)類型有三種,IN、out和INOUT:
a. in:數(shù)據(jù)只是從外部傳入內(nèi)部使用(值傳遞),可以是數(shù)值也可以是變量
b. out:只允許過(guò)程內(nèi)部使用(不用外部數(shù)據(jù)),給外部使用的(引用傳遞:外部的數(shù)據(jù)會(huì)被先清空才會(huì)進(jìn)入到內(nèi)部),只能是變量
c. inout:外部可以在內(nèi)部使用,內(nèi)部修改的也可以給外部使用,典型的引用 傳遞,只能傳遞變量。
【相關(guān)推薦:mysql視頻教程】