0
私は現在Postgresを使用しています。私はスクリプト内でいくつかの繰り返しを減らすためにコミッション関数を作成したいと考えています。スクリプトからINSERT関数をインラインで呼び出してください。
私は次のように定義された関数があります:私は、次のように私のスクリプトで関数を呼び出したい
CREATE FUNCTION add_entry(i smallint, m varchar, t varchar) RETURNS VOID AS $$
BEGIN
INSERT INTO metrics(id, medium, metric) VALUES (i, m, t);
END
$$ LANGUAGE 'plpgsql';
を:
SELECT add_entry(3, "hello", "world");
私はで関数定義でスクリプトを呼び出すとスクリプトの後に続けて関数を呼び出すと、次のエラーが生成されます。
psql:static-data.sql:7: ERROR: function "add_entry" already exists with same argument types
SELECT "add_entry"(3, "hello", "world");
psql:static-data.sql:9: ERROR: column "hello" does not exist
LINE 1: SELECT "add_entry"(3, "hello", "world");
問題は、私が関数を呼び出すと、関数の再定義のように動作しているように見えます。
この問題を解決して直接関数を呼び出す方法を教えてください。あなたの助けをありがとう!
これは意味があります。関数の再定義を強制する方法はありますか?以前の関数を削除して再定義するのと同じですか? –
パーフェクト、私はあなたの更新された答えを参照してください。どうもありがとうございます! –
@JamesTaylor「CREATE OR REPLACE FUNCTION」は時には厄介なことに注意してください。単に変数の名前を変更することはできません。だから時には、関数を最初に削除する必要があるかもしれません。 – redneb