Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Tại sao không dùng dấu chấm phẩy làm DELIMITER trong Stored Procedure MySQL

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.