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

MySQL Delimiter Error เกิดขึ้นเมื่อไหร่?


ข้อผิดพลาด Delimiter ใน MySQL เกิดขึ้นเมื่อใช้ Delimiter แบบ Pipe (|) ร่วมกับ Semicolon (;) ใน MySQL เวอร์ชันต่ำกว่า 8.0.12

MySQL ถือว่า Pipe (|) เป็น Delimiter ตัวหนึ่ง และ Semicolon (;) เป็นอีกตัวหนึ่ง จึงไม่ควรสับสนระหว่าง Delimiter แบบ Pipe กับ Semicolon

หมายเหตุ: ใน MySQL 8.0.12 Pipe Delimiter ทำงานร่วมกับ Semicolon ได้ปกติ หากใช้เวอร์ชันต่ำกว่า 8.0.12 จะเกิด Delimiter Error

ตัวอย่างการทำงานของ Delimiter

mysql> delimiter |; 
mysql> create procedure getSumOfTwoNumbers() 
-> BEGIN 
-> SELECT 2+3 AS TotalValue; 
-> END ; 
-> |; 
Query OK, 0 rows affected (0.17 sec) 
mysql> delimiter ;

เรียก Stored Procedure:

mysql> CALL getSumOfTwoNumbers();

ผลลัพธ์:

+------------+ | TotalValue | +------------+ | 5          | +------------+ 1 row in set (0.00 sec)

แต่ไม่ควรใช้ Pipe Delimiter ร่วมกับ Semicolon เพราะ Semicolon เป็น Delimiter เริ่มต้นของ MySQL ใช้บอกจบคำสั่ง

ตัวอย่างการเปลี่ยน Delimiter แบบมาตรฐาน

1. ตั้ง Delimiter เป็น Pipe:

mysql> DELIMITER |

2. สร้าง Stored Procedure:

mysql> DELIMITER | 
mysql> CREATE PROCEDURE Demo() 
-> BEGIN 
-> SELECT 2*3 AS TotalMultiplication; 
-> END ; 
-> | 
Query OK, 0 rows affected (0.12 sec)

3. กลับมาใช้ Semicolon:

mysql> DELIMITER ;