Saat menggunakan editor prosedur bawaan, MySQL Workbench menambahkan beberapa perintah tambahan:
USE `test`; // <----------
DROP procedure IF EXISTS `p2`; // <----------
DELIMITER $$
USE `test`$$ // <----------
CREATE PROCEDURE test.`p2` ()
LANGUAGE SQL
DETERMINISTIC
COMMENT 'Adds "nson" to first and last names in the record.'
BEGIN
SELECT 'Hello World';
END $$
DELIMITER ; // <----------
Perintah-perintah itu tidak sepenuhnya terkait dengan sintaks prosedur tersimpan, mereka hanyalah komoditas—klien MySQL lainnya (seperti HeidiSQL atau utilitas baris perintah resmi) tidak akan menambahkannya. Perubahan pembatas terakhir mungkin adalah pengaturan ulang untuk menghindari masalah dalam pernyataan di masa mendatang pada koneksi yang sama.
Anda perlu mengubah pembatas untuk menginstruksikan klien tentang di mana kode prosedur dimulai dan diakhiri. Masalahnya adalah bahwa badan prosedur biasanya merupakan kumpulan pernyataan SQL sehingga menghilangkan perubahan pembatas akan membuat MySQL berpikir bahwa Anda mencoba menjalankan serangkaian pernyataan, yang pertama adalah ini:
CREATE PROCEDURE test.`p2` ()
LANGUAGE SQL
DETERMINISTIC
COMMENT 'Adds "nson" to first and last names in the record.'
BEGIN
SELECT 'Hello World';
Dengan DELIMITER $$
Anda memberi tahu MySQL bahwa pernyataan lengkap Anda berasal dari CREATE
ke END
. Ini hanya gula sintaksis:DELIMITER
bahkan bukan kata kunci SQL. HeidiSQL, misalnya, menyediakan GUI dengan kotak teks tempat Anda menulis badan prosedur, sehingga Anda tidak memerlukan solusi DELIMITER.