2016-03-21 58 views
0

この関数を実行しようとしました。私はpgAdminでを使用して、手動エラー:指定された名前と引数の型に一致する関数はありません

SELECT calculate_something(7)または

ERROR: function calculate_something(integer) doesn't exist hint no function matches the given name and argument types SELECT common.calculate_something(7)でこの関数を呼び出すと

私はすでにその機能と間違っている何コール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; 
+0

私のために動作します。関数が正常に作成されたことを確認し、正しいデータベースに接続しているかどうかを確認してください。 – partlov

+0

自動コミットを使って作業している場合は、 'create function'文を'コミットする 'ことを確認してください。 –

+0

どのバージョンのpgを使用していますか? – devanand

答えて

0

は、あなたの関数が実際に呼び出されます。

stoff_stueckgewicht(id bigint) 

それとも:

stoff_stückgewicht(id bigint)

DebianとPostgreSQLのロケール設定が異なると、後者の問題が発生する可能性があります。

また、pgAdmin IIIを使用して、データベース上のすべてのスキーマのすべての機能を実行し、その機能を手動で見つけることができます。

+0

私の問題の説明をより理解しやすくし、その部分を忘れてしまわないように、関数の名前を変更しました。悲しい。 – Kody

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に登録キャストがあります -

いずれかの方法で、bigint機能数値リテラルで呼び出すことができます。

Function Type Resolution考えてみましょう:

関連する問題