Функция не имеет смысла, поскольку входной параметр никогда не используется. Решение для oracle / Mysql, приведенное ниже, может быть неподходящим, поскольку у меня нет вашей модели данных, но определенно направит вас в правильном направлении.
Если вы используете агрегацию с group by, это означает несколько возвращаются строки, и в этом случае ваш вывод будет набором записей, что потребует дополнительных изменений в функции, и решение во многом зависит от типа базы данных.
Если вы находитесь в базе данных Oracle, попробуйте ниже ,
Create or Replace FUNCTION Something ( v_sno IN Supplier.SNO%TYPE) RETURN NUMBER IS
l_cnt NUMBER;
BEGIN
Select count (*) into l_cnt
From Supplier
WHERE SNO = v_sno;
return l_cnt;
END;
Если вы на MYSQL, вы можете написать функцию, как показано ниже,
DELIMITER $$
CREATE FUNCTION Something(
v_sno INT
)
RETURNS INT
DETERMINISTIC
BEGIN
DECLARE l_cnt INT;
Select count (*) into l_cnt
From Supplier
WHERE SNO = v_sno;
RETURN (l_cnt);
END$$
DELIMITER;