PostgreSQL: Функция не существует

#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, и она вставила кавычки… сбивающее с толку поведение.