mysql存儲過程與存儲函數(shù)的區(qū)別是什么

區(qū)別:1、存儲函數(shù)的限制比較多,而存儲過程的限制較少;2、存儲過程的實現(xiàn)功能要復(fù)雜些,而存儲函數(shù)的實現(xiàn)功能針對性比較強;3、存儲函數(shù)必須有一個返回值,而存儲過程可以沒有返回值;4、調(diào)用時的不同;5、參數(shù)的不同。

mysql存儲過程與存儲函數(shù)的區(qū)別是什么

本教程操作環(huán)境:windows7系統(tǒng)、mysql8版本、Dell G3電腦。

存儲過程和存儲函數(shù)類似于面向對象程序設(shè)計語言中的方法,可以簡化代碼,提高代碼的重用性。本文主要介紹如何創(chuàng)建存儲過程和存儲函數(shù),以及存儲過程與函數(shù)的使用、修改、刪除等操作。

存儲過程與存儲函數(shù)

mysql中提供存儲過程與存儲函數(shù)機制,我們姑且將存儲過程和存儲函數(shù)合稱為存儲程序。與一般的SQL語句需要先編譯然后立即執(zhí)行不同,存儲程序是一組為了完成特定功能的SQL語句集,經(jīng)編譯后存儲在數(shù)據(jù)庫中,當(dāng)用戶通過指定存儲程序的名字并給定參數(shù)(如果該存儲程序帶有參數(shù))來調(diào)用才會執(zhí)行。

存儲程序就是一條或者多條SQL語句和控制語句的集合,我們可以將其看作MySQL的批處理文件,當(dāng)然,其作用不僅限于批處理。當(dāng)想要在不同的應(yīng)用程序或平臺上執(zhí)行相同的功能一段程序或者封裝特定功能時,存儲程序是非常有用的。數(shù)據(jù)庫中的存儲程序可以看做是面向?qū)幊讨?a href="http://www.babyishan.com/tag/%e9%9d%a2%e5%90%91%e5%af%b9%e8%b1%a1">面向?qū)ο?/b>方法,它允許控制數(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)部修改的也可以給外部使用,典型的引用 傳遞,只能傳遞變量。

【相關(guān)推薦:mysql視頻教程

以上就是

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點贊5 分享