Một số chương trình MySQL client như MySQL Workbench, HeidiSQL hay các chương trình chạy lệnh MySQL trên Linux thường sử dụng dấu chấm phẩy ( ; ) để phân tách câu lệnh SQL và chạy các câu lệnh một cách độc lập. Như ví dụ bên dưới, chương trình sẽ chạy lệnh bên trên xong mới chạy tiếp lệnh bên dưới.
SELECT * FROM khachHang; SELECT * FROM sanPham;
Tuy nhiên, khi bạn viết SP (Stored Procedure) bạn sẽ phải viết rất nhiều câu lệnh có dấu ( ; ) trong khi chúng ta cần phải coi SP là một câu lệnh duy nhất. Do đó chúng ta cần phải dùng câu lệnh DELIMITER
để định nghĩa lại dấu phân cách này.
Thường thì người ta sẽ hay dùng dấu // hoặc $$ cho câu lệnh DELIMITER
trong SP theo các bước sau:
- Đầu tiên thay đổi dấu phân cách mặc định bằng // hoặc $$
- Tiếp theo ta vẫn sử dụng dấu ( ; ) trong SP nhưng khi kết thúc SP bằng
END
, ta phải đặt dấu // hoặc $$ đằng sauEND
- Cuối cùng ta sẽ thay đổi dấu phân cách mặc định về ( ; )
Chúng ta cùng xem ví dụ bên dưới
DELIMITER $$ CREATE PROCEDURE SP_vi_du() BEGIN INSERT INTO sinhVien(STT, Ten_SV, Ma_so) VALUES ('1', 'Nguyen Van A', 'M100'); END $$ DELIMITER ;
Bài viết dựa trên MySQL Document và chạy trên MySQL 8.0.26 và MariaDB 10.2.
Mong được các bạn đóng góp ý kiến để website ngày càng phát triển.