#postgresql #function
Вопрос:
Пытаясь создать свою первую функцию PostgreSQL, я не понимаю, почему я не могу вызвать эту функцию.
CREATE FUNCTION public."SampledImpCountToOriginal"(IN integer)
RETURNS numeric
LANGUAGE 'plpgsql'
AS $BODY$
BEGIN
RETURN CASE WHEN $1 > 4 THEN EXP(POW($1 - 1.88, 1/2.3)) ELSE $1 END;
END;
$BODY$;
SELECT SampledImpCountToOriginal(5)
ОШИБКА: функция sampledimpcounttooriginal(целое число) не существует
СТРОКА 1: ВЫБЕРИТЕ SampledImpCountToOriginal(5)
^ ПОДСКАЗКА: Ни одна функция не соответствует заданному имени и типам аргументов. Возможно, вам потребуется добавить явные приведения типов. Состояние SQL:
42883 Символ: 8
Звоню из той же базы данных, в которой я ее создал, пытался сменить владельца, не могу понять. Функция указана в pgAdmin как SampledImpCountToOriginal(IN integer)
.
Ответ №1:
Ты должен позвонить вот так — SELECT "SampledImpCountToOriginal"(5)
Когда бы вы ни использовали Double Quotes ""
create Function
это , вы должны использовать в процессе вызова. Нравится —
SELECT public."SampledImpCountToOriginal"(
<integer>
)
Если вы не привыкли double quotes ""
звонить своим created function with ""
. он выполняет другую функцию.
SELECT public.sampledimpcounttooriginal(
<integer>
)
Комментарии:
1. Спасибо! Спасатель. Я отбросил функцию и переопределил ее без кавычек. Я изначально создал функцию с помощью pgAdmin, и она вставила кавычки… сбивающее с толку поведение.