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

Delimiter ใน MySQL - การเปลี่ยนตัวคั่นคำสั่งสำหรับ Stored Procedure

DELIMITER ใน MySQL คืออะไร และเมื่อไหร่ต้องใช้

Delimiter (ตัวคั่นคำสั่ง) ค่าเริ่มต้นคือ Semicolon (;) ใช้บอก MySQL Client ว่าคำสั่งจบที่ไหน

เมื่อไหร่ต้องเปลี่ยน Delimiter?

  • สร้าง Stored Procedure
  • สร้าง Function
  • สร้าง Trigger
  • เขียน Block ที่มีหลายคำสั่ง (BEGIN ... END)

เพราะภายใน Block มี Semicolon หลายตัว หากไม่เปลี่ยน Delimiter MySQL จะคิดว่าคำสั่งจบก่อนเวลา

ตัวอย่างการใช้งาน

ตาราง GetRecordsFromNow มีข้อมูล:

YourDateTime
2018-12-07 22:30:18
2018-12-03 22:30:31
2018-12-02 22:30:41
2018-12-01 22:30:56
2018-12-03 22:31:04

สร้าง Stored Procedure ด้วย Delimiter //:

DELIMITER //
CREATE PROCEDURE DisplayALL()
BEGIN
    SELECT * FROM GetRecordsFromNow;
END //
DELIMITER ;

เรียกใช้ Procedure:

CALL DisplayALL();

ผลลัพธ์: แสดงข้อมูลทั้ง 5 แถวเหมือนเดิม

Delimiter ที่นิยมใช้

  • // - นิยมมากที่สุด
  • $$ - ใช้ใน PostgreSQL เช่นกัน
  • || - น้อยกว่า

ขั้นตอนสรุป

  1. DELIMITER // - เปลี่ยนตัวคั่นเป็น //
  2. เขียน CREATE PROCEDURE/FUNCTION/TRIGGER ใช้ ; ภายในได้ตามปกติ
  3. จบ Block ด้วย //
  4. DELIMITER ; - คืนค่าเดิม

หมายเหตุ: DELIMITER เป็นคำสั่งของ MySQL Client (mysql, mysqlsh, Workbench) ไม่ใช่คำสั่ง SQL มาตรฐาน