Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

ความแตกต่างสำคัญที่สุดระหว่าง MySQL Functions และ Procedures


ความแตกต่างที่สำคัญที่สุดระหว่าง Procedure และ Function คือพวกเขาถูกเรียกใช้ (Invoke) แตกต่างกัน และเพื่อวัตถุประสงค์ที่ต่างกัน นอกจากนี้ ความแตกต่างอื่นๆ ระหว่าง Procedure และ Function มีดังนี้:

  • Procedure ไม่คืนค่า แต่ถูกเรียกใช้ด้วยคำสั่ง CALL เพื่อดำเนินการ เช่น การแก้ไขตาราง หรือประมวลผลเรคคอร์ดที่ดึงมา

    สementara Function ถูกเรียกใช้ภายใน Expression และคืนค่าค่าเดียวโดยตรงให้ Caller เพื่อใช้ใน Expression นั่นคือ Function ถูกใช้ใน Expressions เช่นเดียวกับ Constant, Built-in Function หรือการอ้างอิงคอลัมน์ตาราง

  • เราไม่สามารถเรียก Function ด้วยคำสั่ง CALL ได้ เราไม่สามารถเรียก Procedure ใน Expression ได้

  • ไวยากรณ์สำหรับการสร้าง Routine แตกต่างกันเล็กน้อยระหว่าง Procedure และ Function ดังนี้:

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
  • พารามิเตอร์ของ Procedure สามารถกำหนดเป็น Input-only, Output-only หรือทั้ง Input และ Output นี่หมายความว่า Procedure สามารถส่งค่ากลับให้ Caller ได้โดยใช้ Output Parameters ค่าเหล่านี้สามารถเข้าถึงได้ในคำสั่งที่ตามหลัง CALL Statement

    สementara Function มีเฉพาะ Input Parameters ดังนั้น แม้ทั้งคู่จะมี Parameters การประกาศพารามิเตอร์ของ Procedure จะแตกต่างจาก Function

  • Function คืนค่า ดังนั้นต้องมี Clause RETURNS ในการกำหนด Function เพื่อระบุชนิดข้อมูลของค่าคืน ต้องมีคำสั่ง RETURN อย่างน้อยหนึ่งคำสั่งภายใน Body ของ Function เพื่อคืนค่าให้ Caller

    ส่วน Procedure RETURNS และ RETURN ไม่ปรากฏในการกำหนด Procedure