आप MySQL संग्रहीत कार्यविधियों में वैकल्पिक पैरामीटर सेट नहीं कर सकते हैं।
हालांकि आप MySQL UDF में वैकल्पिक पैरामीटर सेट कर सकते हैं।
आप जानते हैं कि MySQL में एक AVG समुच्चय है। समारोह ?
समाधान यदि आप इस वर्कअराउंड की कुरूपता का सामना कर सकते हैं तो यहां नमूना कोड है जो इनपुट के रूप में मानों के साथ अल्पविराम से अलग स्ट्रिंग का उपयोग करता है और औसत देता है।
DELIMITER $$
CREATE FUNCTION MyAvg(valuestr varchar) RETURNS float
BEGIN
DECLARE output float;
DECLARE arg_count integer;
DECLARE str_length integer;
DECLARE arg float;
DECLARE i integer;
SET output = NULL;
SET i = LENGTH(valuestr);
IF i > 0 THEN BEGIN
SET arg_count = 1;
WHILE i > 0 DO BEGIN
IF MID(valuestr, i, 1)
SET i = i - 1;
END; END WHILE;
/* calculate average */
SET output = 0;
SET i = arg_count;
WHILE i > 0 DO BEGIN
SET arg = SUBSTRING_INDEX(
SUBSTRING_INDEX(valuestr, ',' , i)
, ',', -1 );
SET output = output + arg;
SET i = i - 1;
END; END WHILE;
SET output = output / arg_count;
END; END IF;
RETURN output;
END $$
DELIMITER ;
समारोह को खिलाने के लिए concat_ws का प्रयोग करें।
SELECT MyAvg(CONCAT_WS(',',100,200,300,500)) AS test;
आप एक UDF भी लिख सकते हैं में C(++) या डेल्फी/लाजर