首頁  >  文章  >  資料庫  >  MySQL 函數和過程之間最顯著的差異是什麼?

MySQL 函數和過程之間最顯著的差異是什麼?

WBOY
WBOY轉載
2023-09-17 22:49:021246瀏覽

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 不會出現在過程定義中。

    li>

以上是MySQL 函數和過程之間最顯著的差異是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除