1. 程式人生 > >MySQL儲存過程和函式的區別與優缺點

MySQL儲存過程和函式的區別與優缺點

為什麼要使用儲存過程和函式

 資料庫物件儲存過程和函式,是用來實現一組關於表操作的SQL語句程式碼當做一個整體來執行。一個完整的操作會包含多條SQL語句,在執行過程中需要根據前面的SQL語句來執行結果有選擇的執行後面的SQL語句。
儲存過程和函式可以簡單的理解為一條或多條SQL語句的集合。儲存過程和函式就是事先經過編譯並存儲在資料庫中的一段SQL語句集合。儲存過程和函式執行不是由程式呼叫,也不是手動啟動,而是由事件觸發、啟用從而實現執行的。
他們的主要區別是函式必須有返回值,而儲存過程沒有。

儲存過程和函式區別

儲存過程是使用者定義的一系列sql語句的集合,涉及特定表或其它物件的任務,使用者可以呼叫儲存過程,而函式通常是資料庫已定義的方法,它接收引數並返回某種型別的值並且不涉及特定使用者表。

儲存過程和函式存在以下幾個區別:

1)一般來說,儲存過程實現的功能要複雜一點,而函式的實現的功能針對性比較強。儲存過程,功能強大,可以執行包括修改表等一系列資料庫操作;使用者定義函式不能用於執行一組修改全域性資料庫狀態的操作。

2)對於儲存過程來說可以返回引數,如記錄集,而函式只能返回值或者表物件。函式只能返回一個變數;而儲存過程可以返回多個。儲存過程的引數可以有IN,OUT,INOUT三種類型,而函式只能有IN類~~儲存過程宣告時不需要返回型別,而函式宣告時需要描述返回型別,且函式體中必須包含一個有效的RETURN語句。

3)儲存過程,可以使用非確定函式,不允許在使用者定義函式主體中內建非確定函式。

4)儲存過程一般是作為一個獨立的部分來執行( EXECUTE 語句執行),而函式可以作為查詢語句的一個部分來呼叫(SELECT呼叫),由於函式可以返回一個表物件,因此它可以在查詢語句中位於FROM關鍵字的後面。 SQL語句中不可用儲存過程,而可以使用函式。

儲存過程和函式優缺點

有點:
1.儲存過程和函式允許標準組件式程式設計,提高了SQL語句的重用性、共享性和可移植性。
2.儲存過程和函式可以被作為一種安全機制來利用。
3.儲存過程和函式能夠實現較快的執行速度,能夠減少網路流量。
缺點:
1.儲存過程和函式的編寫比單句SQL語句複雜。
2.在編寫儲存過程和函式時,需要建立這些資料庫物件的許可權。