MySQL 函式和儲存過程之間最顯著的區別是什麼?
儲存過程和函式之間最顯著的區別在於它們的呼叫方式和用途不同。除此之外,儲存過程和函式之間還有以下區別:
儲存過程不返回值。它透過 CALL 語句呼叫來執行操作,例如修改表或處理檢索到的記錄。
另一方面,函式在表示式中呼叫,並直接向呼叫者返回單個值以在表示式中使用。也就是說,函式在表示式中的使用方法與常量、內建函式或表列引用相同。
我們不能用 CALL 語句呼叫函式。我們不能在表示式中呼叫儲存過程。
例程建立的語法在儲存過程和函式中略有不同,如下所示:
CREATE
[DEFINER = { user | CURRENT_USER }]
PROCEDURE sp_name ([proc_parameter[,...]])
[characteristic ...] routine_body
CREATE
[DEFINER = { user | CURRENT_USER }]
FUNCTION sp_name ([func_parameter[,...]])
RETURNS type
[characteristic ...] routine_body
proc_parameter:
[ IN | OUT | INOUT ] param_name type
func_parameter:
param_name type
type:
Any valid MySQL data type
characteristic:
COMMENT 'string'
| LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
routine_body:
Valid SQL routine statement儲存過程引數可以定義為僅輸入、僅輸出或同時輸入和輸出。這意味著儲存過程可以使用輸出引數將值傳回呼叫者。這些值可以在 CALL 語句後面的語句中訪問。
另一方面,函式只有輸入引數。因此,儘管儲存過程和函式都可以具有引數,但儲存過程引數宣告語法與函式不同。
函式返回值,因此函式定義中必須有 RETURNS 子句來指示返回值的資料型別。此外,函式體中必須至少有一個 RETURN 語句才能將值返回給呼叫者。
另一方面,RETURNS 和 RETURN 不出現在儲存過程定義中。
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP