Giới thiệu
Khi tạo Stored Procedure (thủ tục lưu trữ) chứa nhiều câu lệnh SQL, cần thay đổi delimiter (ký tự kết thúc câu lệnh) mặc định từ ; sang ký tự khác (thường là // hoặc $$) để MySQL không nhầm lẫn giữa dấu kết thúc câu lệnh bên trong procedure và dấu kết thúc câu lệnh CREATE PROCEDURE.
Quy trình chuẩn
DELIMITER //— Đổi delimiter tạm thời.- Viết
CREATE PROCEDURE ... BEGIN ... END //— Kết thúc procedure bằng delimiter mới. DELIMITER ;— Khôi phục delimiter mặc định.
Ví dụ minh họa
Bước 1: Tạo bảng
CREATE TABLE DemoTable2028 (
StudentFirstName VARCHAR(20),
StudentLastName VARCHAR(20)
);
Bước 2: Tạo procedure chèn dữ liệu
DELIMITER //
CREATE PROCEDURE insert_name(IN fname VARCHAR(20), IN lname VARCHAR(20))
BEGIN
INSERT INTO DemoTable2028 VALUES (fname, lname);
END //
DELIMITER ;
Bước 3: Gọi procedure
CALL insert_name('Chris', 'Brown');
Bước 4: Kiểm tra
SELECT * FROM DemoTable2028;
+------------------+-----------------+
| StudentFirstName | StudentLastName |
+------------------+-----------------+
| Chris | Brown |
+------------------+-----------------+
Lưu ý: Nếu quên khôi phục DELIMITER ;, các câu lệnh tiếp theo sẽ bị lỗi cú pháp. Một số công cụ GUI (Workbench, DBeaver) cho phép chạy khối lệnh mà không cần đổi delimiter thủ công.