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

อะไรคือความแตกต่างที่สำคัญที่สุดระหว่างฟังก์ชันและขั้นตอนของ 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 จะไม่ปรากฏในคำจำกัดความของขั้นตอน