過程和函數之間最顯著的區別是它們的調用方式不同并且出于不同的目的。除此之外,以下是過程和函數之間的區別 –
過程不返回值。相反,它是使用 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 不會出現在過程定義中。
li>
以上就是MySQL 函數和過程之間最顯著的區別是什么?的詳細內容,更多請關注www.92cms.cn其它相關文章!