Нельзя установить дополнительные параметры в хранимых процедурах 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 (++) или Delphi / Lazarus