Я пытаюсь создать хранимую процедуру в PostgreSQL. Функция работает, когда я использую float
, но когда я пытаюсь изменить float
с до numeric
я получаю сообщение об ошибке:Функция PostgreSQL числовой тип ошибки
ERROR: cannot change return type of existing function
SQL state: 42P13
Detail: Row type defined by OUT parameters is different.
Hint: Use DROP FUNCTION percent_grades(text) first.
Я действительно не знаю, что это значит, но я не думаю, что я d необходимо сделать что-либо кроме CAST
, чтобы изменить type
.
Моя функция:
CREATE OR REPLACE FUNCTION percent_grades(text)
RETURNS TABLE(grade text, percent float)
AS
$$
DECLARE percent_total float;
BEGIN
RETURN QUERY
SELECT psa_grade_name,
SUM(psa_amount)/CAST(total_cards($1) AS float) AS percent_total
FROM psa_pop_view
WHERE psa_card = $1
GROUP BY psa_grade_name
ORDER BY psa_grade_name;
END;
$$
LANGUAGE plpgsql;
Я хочу, чтобы заменить float
с с numeric(5, 4)
.