您好,登錄后才能下訂單哦!
這篇文章主要講解了“mysql存儲過程與存儲函數(shù)的區(qū)別有哪些”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“mysql存儲過程與存儲函數(shù)的區(qū)別有哪些”吧!
區(qū)別:1、存儲函數(shù)的限制比較多,而存儲過程的限制較少;2、存儲過程的實現(xiàn)功能要復(fù)雜些,而存儲函數(shù)的實現(xiàn)功能針對性比較強;3、存儲函數(shù)必須有一個返回值,而存儲過程可以沒有返回值;4、調(diào)用時的不同;5、參數(shù)的不同。
本教程操作環(huán)境:windows7系統(tǒng)、mysql8版本、Dell G3電腦。
存儲過程和存儲函數(shù)類似于面向?qū)ο蟪绦蛟O(shè)計語言中的方法,可以簡化代碼,提高代碼的重用性。本文主要介紹如何創(chuàng)建存儲過程和存儲函數(shù),以及存儲過程與函數(shù)的使用、修改、刪除等操作。
存儲過程與存儲函數(shù)
MySQL中提供存儲過程與存儲函數(shù)機制,我們姑且將存儲過程和存儲函數(shù)合稱為存儲程序。與一般的SQL語句需要先編譯然后立即執(zhí)行不同,存儲程序是一組為了完成特定功能的SQL語句集,經(jīng)編譯后存儲在數(shù)據(jù)庫中,當用戶通過指定存儲程序的名字并給定參數(shù)(如果該存儲程序帶有參數(shù))來調(diào)用才會執(zhí)行。
存儲程序就是一條或者多條SQL語句和控制語句的集合,我們可以將其看作MySQL的批處理文件,當然,其作用不僅限于批處理。當想要在不同的應(yīng)用程序或平臺上執(zhí)行相同的功能一段程序或者封裝特定功能時,存儲程序是非常有用的。數(shù)據(jù)庫中的存儲程序可以看做是面向?qū)幊讨忻嫦驅(qū)ο蠓椒ǎ试S控制數(shù)據(jù)的訪問方式。
存儲函數(shù)與存儲過程有如下區(qū)別:
(1)存儲函數(shù)的限制比較多,例如不能用臨時表,只能用表變量,而存儲過程的限制較少;存儲過程的實現(xiàn)功能要復(fù)雜些,而函數(shù)的實現(xiàn)功能針對性比較強。
(2)返回值不同。存儲函數(shù)必須有返回值,且僅返回一個結(jié)果值;存儲過程可以沒有返回值,但是能返回結(jié)果集(out,inout)。
(3)調(diào)用時的不同。存儲函數(shù)嵌入在SQL中使用,可以在select 存儲函數(shù)名(變量值);存儲過程通過call語句調(diào)用 call 存儲過程名。
(4)參數(shù)的不同。存儲函數(shù)的參數(shù)類型類似于IN參數(shù),沒有類似于OUT和INOUT的參數(shù)。存儲過程的參數(shù)類型有三種,IN、out和INOUT:
a. in:數(shù)據(jù)只是從外部傳入內(nèi)部使用(值傳遞),可以是數(shù)值也可以是變量
b. out:只允許過程內(nèi)部使用(不用外部數(shù)據(jù)),給外部使用的(引用傳遞:外部的數(shù)據(jù)會被先清空才會進入到內(nèi)部),只能是變量
c. inout:外部可以在內(nèi)部使用,內(nèi)部修改的也可以給外部使用,典型的引用 傳遞,只能傳遞變量。
感謝各位的閱讀,以上就是“mysql存儲過程與存儲函數(shù)的區(qū)別有哪些”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對mysql存儲過程與存儲函數(shù)的區(qū)別有哪些這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。