首頁  >  文章  >  資料庫  >  mysql預存程序與儲存函數的差別是什麼

mysql預存程序與儲存函數的差別是什麼

青灯夜游
青灯夜游原創
2021-12-13 17:57:016979瀏覽

區別:1、儲存函數的限制比較多,而預存程序的限制較少;2、預存程序的實作功能要複雜些,而儲存函數的實作功能針對性比較強;3、儲存函數必須有一個回傳值,而預存程序可以沒有回傳值;4、呼叫時的不同;5、參數的不同。

mysql預存程序與儲存函數的差別是什麼

本教學操作環境:windows7系統、mysql8版本、Dell G3電腦。

預存程序和儲存函數類似於物件導向程式設計語言中的方法,可以簡化程式碼,提高程式碼的重用性。本文主要介紹如何建立預存程序和儲存函數,以及預存程序與函數的使用、修改、刪除等操作。

預存程序與儲存函數

#MySQL中提供預存程序與儲存函數機制,我們姑且將預存程序與儲存函數合稱為儲存程式。與一般的SQL語句需要先編譯然後立即執行不同,儲存程式是一組為了完成特定功能的SQL語句集,經編譯後儲存在資料庫中,當使用者透過指定儲存程式的名字並給定參數(如果該儲存程式帶有參數)來呼叫才會執行。

儲存程式就是一條或多條SQL語句和控制語句的集合,我們可以將其視為MySQL的批次文件,當然,其作用不僅限於批次處理。當想要在不同的應用程式或平台上執行相同的功能一段程式或封裝特定功能時,儲存程式是非常有用的。資料庫中的儲存程式可以看做是面向對程式設計中物件導向方法,它允許控制資料的存取方式。

儲存函數與預存程序有下列差異:

(1)儲存函數的限制比較多,例如無法用暫存表,只能用表變量,而預存過程的限制較少;預存過程的實作功能則複雜些,而函數的實作功能針對性比較強。

(2)回傳值不同。儲存函數必須有傳回值,且只傳回一個結果值;預存程序可以沒有傳回值,但是能傳回結果集(out,inout)。

(3)呼叫時的不同。儲存函數嵌入在SQL中使用,可以在select 儲存函數名稱(變數值);儲存程序透過call語句呼叫 call 儲存過程名。

(4)參數的不同。儲存函數的參數類型類似IN參數,沒有類似OUT和INOUT的參數。預存程序的參數型別有三種,IN、out和INOUT:

    a. in:資料只是從外部傳入內部使用(值傳遞),可以是數值也可以是變數

b. out:只允許過程內部使用(不用外部資料),給外部使用的(引用傳遞:外部的資料會被先清空才會進入到內部),只能是變數

    c. inout :外部可以在內部使用,內部修改的也可以給外部使用,典型的引用傳遞,只能傳遞變數。

【相關推薦:mysql影片教學

#

以上是mysql預存程序與儲存函數的差別是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn