のPostgreSQL 8.4を使用して、私は関数を記述しようとしている、それは次のようになります。は、さらに別のストアドプロシージャの構文エラー - IF-THEN-ELSE
CREATE OR REPLACE FUNCTION addorupdate(smallint, varchar(7)) RETURNS void AS
$$
BEGIN
IF EXISTS (SELECT * FROM consist WHERE slave = $1) THEN
UPDATE consist SET
master = $2
where slave = $1;
ELSE
INSERT INTO consist(slave, master) VALUES ($2, $1);
END IF;
END;
$$
LANGUAGE SQL;
しかし、それは次のように失敗します。
...私は時間とカフェインをなぜ浪費していたのですか?そして、新鮮な目で誰かを使って私を助けました。
達成しようとしていることが明確でない場合: スレーブは一意の値の列です。存在する場合は、現在のマスターで更新します。そうでなければ、INSERT。
UPDATE:plpgsqlがする 変更言語、およびそれが今でスロー:
ERROR: language "plpgsql" does not exist
UPDATE:
CREATE LANGUAGE plpgsql;
(:RESOLVED :)
次に、 ''言語を作成する ''が必要です。または、 'create extension'をPostgresqlのバージョンで削除します。 http://www.postgresql.org/docs/9.2/static/sql-createlanguage.htmlを参照してください。 –
これはhttp://www.postgresql.org/docs/8.4/static/xplang-install.htmlに役立ちますか? –
@ Colin'tHart私はpg_pltemplateにpgplsqlを持っていませんでしたが、代わりにplpgsqlを試してみました。助けを応援! – Jarmund