Cách sử dụng câu lệnh Delimiter trong MySQL / MariaDB

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 phân cách ( ; ) để 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 sau END
  • 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.

Quảng cáo

Ủng hộ website

Mong được các bạn đóng góp ý kiến để website ngày càng phát triển.

Add Comment