Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL - उपयोगकर्ता परिभाषित फ़ंक्शन (UDF) बनाने में समस्या

आपको सीमांकक बदलना होगा ताकि आप उपयोग कर सकें ; समारोह के अंदर:

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 और इसे चलाता है। वोला! आपका फ़ंक्शन बनाया गया है। अंत में, जब आप अपना फ़ंक्शन चलाते हैं, तो कोड ठीक चलता है क्योंकि फ़ंक्शन बॉडी डिफ़ॉल्ट डिलीमीटर का उपयोग करके कई कथनों से बना होता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मुझे mysqli (डेटाबेस) कनेक्शन कब बंद करना होगा?

  2. Mysql घटना त्रुटि php . का उपयोग कर

  3. सर्कुलर जॉइनिंग, रिकर्सिव सर्च को रोकना

  4. Mysql में रिकॉर्ड्स के सन्निहित ब्लॉक का चयन करना

  5. ऑर्डर कॉलम MySQL अपडेट कर रहा है?