आपको सीमांकक बदलना होगा ताकि आप उपयोग कर सकें ;
समारोह के अंदर:
DELIMITER $$
CREATE FUNCTION remove_non_alphanum (prm_strInput varchar(3000))
RETURNS VARCHAR(3000)
DETERMINISTIC
BEGIN
DECLARE i INT DEFAULT 1;
DECLARE v_char VARCHAR(1);
DECLARE v_parseStr VARCHAR(3000) DEFAULT '';
WHILE (i <= LENGTH(prm_strInput) ) DO
SET v_char = SUBSTR(prm_strInput,i,1);
IF v_char REGEXP '^[A-Za-z0-9]$' THEN
SET v_parseStr = CONCAT(v_parseStr,v_char);
END IF;
SET i = i + 1;
END WHILE;
RETURN trim(v_parseStr);
END
$$
DELIMITER ;
MySQL कमांड-लाइन क्लाइंट
में (और कई अन्य SQL क्लाइंट) डिफ़ॉल्ट सीमांकक है ;
. इसलिए, जब आप अपना मूल कोड टाइप करते हैं, तो MySQL सोचता है कि पहला कमांड वहीं समाप्त होता है जहां पहला ;
पाया जाता है (पंक्ति 5 पर, जैसा कि त्रुटि संदेश बताता है), इस प्रकार आपको एक त्रुटि मिलती है क्योंकि यह मान्य SQL नहीं है:
CREATE FUNCTION remove_non_alphanum (prm_strInput varchar(3000))
RETURNS VARCHAR(3000)
DETERMINISTIC
BEGIN
DECLARE i INT DEFAULT 1;
यदि आप सीमांकक को किसी अन्य चीज़ में बदलते हैं, तो MySQL पूर्ण कमांड की पहचान करता है (CREATE FUNCTION
से) करने के लिए END
और इसे चलाता है। वोला! आपका फ़ंक्शन बनाया गया है। अंत में, जब आप अपना फ़ंक्शन चलाते हैं, तो कोड ठीक चलता है क्योंकि फ़ंक्शन बॉडी डिफ़ॉल्ट डिलीमीटर का उपयोग करके कई कथनों से बना होता है।