5

の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 :)

+2

次に、 ''言語を作成する ''が必要です。または、 'create extension'をPostgresqlのバージョンで削除します。 http://www.postgresql.org/docs/9.2/static/sql-createlanguage.htmlを参照してください。 –

+0

これはhttp://www.postgresql.org/docs/8.4/static/xplang-install.htmlに役立ちますか? –

+0

@ Colin'tHart私はpg_pltemplateにpgplsqlを持っていませんでしたが、代わりにplpgsqlを試してみました。助けを応援! – Jarmund

答えて

4

あなたの言語をである必要がありますではなくsqlです。

+0

pgplsqlの代わりにplpgsqlを使用しました – Jarmund

+0

おっと、ありがとう! –

関連する問題