भाग 1
सीमांकक का उपयोग स्रोत वस्तुओं जैसे संग्रहीत कार्यविधि/फ़ंक्शन, ट्रिगर या ईवेंट के लिए किया जाता है। इन सभी वस्तुओं में BEGIN...END खंड के भीतर एक बॉडी-कोड हो सकता है।
MySQL स्क्रिप्ट में सभी स्टेटमेंट को सीमांकक के साथ समाप्त किया जाना चाहिए, डिफ़ॉल्ट ';' है। लेकिन क्या करें यदि स्रोत वस्तु में कुछ कथनों के साथ शरीर है, जैसे, जी:
INSERT INTO table1 VALUES(1);
CREATE PROCEDURE procedure1()
BEGIN
SET @s = 'SELECT SQRT(POW(?,2) + POW(?,2)) AS hypotenuse';
PREPARE stmt2 FROM @s;
SET @a = 6;
SET @b = 8;
EXECUTE stmt2 USING @a, @b;
END;
INSERT INTO table1 VALUES(2);
कितने बयान? 3 या 8? उत्तर तीन है, क्योंकि स्क्रिप्ट में दो INSERT और एक CREATE PROCEDURE स्टेटमेंट हैं। जैसा कि आप देख सकते हैं, CREATE PROCEDURE में कुछ आंतरिक विवरण भी हैं; हमें MySQL क्लाइंट से कहना चाहिए कि ये सभी स्टेटमेंट (BEGIN...END के अंदर) - ONE स्टेटमेंट का हिस्सा हैं; हम इसे सीमांकक की सहायता से कर सकते हैं:
INSERT INTO table1 VALUES(1);
DELIMITER $$
CREATE PROCEDURE procedure1()
BEGIN
SET @s = 'SELECT SQRT(POW(?,2) + POW(?,2)) AS hypotenuse';
PREPARE stmt2 FROM @s;
SET @a = 6;
SET @b = 8;
EXECUTE stmt2 USING @a, @b;
END$$
DELIMITER ;
INSERT INTO table1 VALUES(2);
ध्यान दें, जब आपके ट्रिगर में कोई BEGIN...END खंड नहीं है, तो सीमांकक छोड़े जा सकते हैं।
भाग 2
सीमांकक के बिना विवरण को -
. के रूप में पार्स किया जाएगाCREATE PROCEDURE procedure1()
BEGIN
SET @s = 'SELECT SQRT(POW(?,2) + POW(?,2)) AS hypotenuse';
के बजाय -
CREATE PROCEDURE procedure1()
BEGIN
SET @s = 'SELECT SQRT(POW(?,2) + POW(?,2)) AS hypotenuse';
PREPARE stmt2 FROM @s;
SET @a = 6;
SET @b = 8;
EXECUTE stmt2 USING @a, @b;
END