Dấu chấm phẩy ; là ký tự kết thúc câu lệnh mặc định. Nếu dùng nó làm DELIMITER cho thủ tục, MySQL sẽ hiểu nhầm câu lệnh CREATE PROCEDURE kết thúc sớm (tại dấu ; đầu tiên trong thân thủ tục), gây lỗi cú pháp.
Quy tắc
Phải đổi DELIMITER sang chuỗi khác (thường là //, $$, ??) trước khi tạo thủ tục, sau đó đổi lại ;.
Ví dụ minh họa
mysql> DELIMITER //
mysql> CREATE PROCEDURE get_Message()
-> BEGIN
-> SELECT CONCAT('HELLO', ' ', 'MYSQL USERS');
-> END //
Query OK, 0 rows affected (0.23 sec)
mysql> DELIMITER ;
Gọi thủ tục:
mysql> CALL get_Message();
Kết quả
+-----------------------------------+
| CONCAT('HELLO', ' ', 'MYSQL USERS') |
+-----------------------------------+
| HELLO MYSQL USERS |
+-----------------------------------+
Mẹo: Trong các công cụ GUI (Workbench, DBeaver, v.v.) thường không cần đổi DELIMITER vì chúng tự xử lý khối lệnh.