错误:没有函数匹配给定的名称和参数类型

时间:2016-03-21 08:49:25

标签: postgresql plpgsql

我尝试让这个功能运行。当我使用pgadmin并用

手动调用此函数时

SELECT calculate_something(7)SELECT common.calculate_something(7)

ERROR: function calculate_something(integer) doesn't exist hint no function matches the given name and argument types (翻译自德语)

我已尝试投出电话SELECT calculate_something(cast(7 as bigint));

该功能或演员有什么问题? :/

CREATE OR REPLACE FUNCTION common.calculate_something(id bigint)
  RETURNS real AS
$BODY$
  DECLARE
    some_value_out REAL := 20;
  BEGIN
    -- I already removed that part for bug fixing and return a constant value (20)
    RETURN some_value_out;
  END;
$BODY$
  LANGUAGE plpgsql VOLATILE;

2 个答案:

答案 0 :(得分:0)

您的功能是否实际被调用:

stoff_stueckgewicht(id bigint)

或者也许:

stoff_stückgewicht(id bigint)

如果debian和PostgreSQL之间的区域设置不同,后者可能会出现问题。

或者,使用pgAdmin III遍历数据库中所有模式的所有函数,并手动查找该函数。

答案 1 :(得分:0)

使用它来诊断您的问题:

SELECT n.nspname AS schema, p.proname AS function
     , pg_get_function_identity_arguments(p.oid) As args
FROM   pg_proc p
JOIN   pg_namespace n ON n.oid = p.pronamespace
WHERE  p.proname LIKE 'calculate%';

并检查您的search_path

无论哪种方式,bigint函数都可以使用数字文字调用 - 默认为integer,但是注册了bigint。< / p>

考虑Function Type Resolution