2017-08-11 8 views
0

目的はPostgreSQLのプロシージャをインポートして使用することです(pgAdminとShellを使用)。タスクを伴う私の実験は間違いで終わったscreen of mistake here。 (チュートリアルからの)コードのPostgreSQLのプロシージャを呼び出す

例:あなたの関数ビルダーで

CREATE OR REPLACE FUNCTION add_event(
             title text, 
             starts TIMESTAMP, 
             ends TIMESTAMP, 
             venue text, 
             postal VARCHAR(9), 
             country CHAR(2) 
            ) 
RETURNS BOOLEAN 
AS $$ 
DECLARE 
    did_insert BOOLEAN := FALSE; 
    found_count INTEGER; 
    the_venue_id INTEGER; 

BEGIN 
    SELECT venue_id INTO the_venue_id 
    FROM venues v 
    WHERE v.postal_code=postal 
        AND v.country_code=country 
        AND v.name LIKE venue 
    LIMIT 1; 

    IF the_venue_id IS NULL THEN 
     INSERT INTO venues (name, postal_code, country_code) 
     VALUES (venue, postal, country) 

     RETURNING venue_id INTO the_venue_id; 
     did_insert := TRUE; 
    END IF; 

RAISE NOTICE ‘Venue found %’, the_venue_id; 

INSERT INTO events (title, starts, ends, venue_id) 
VALUES (title, starts, ends, the_venue_id); 

RETURN did_insert; 

END; 
$$ LANGUAGE plpgsql; 
+0

画像の代わりに質問にエラーテキストを投稿してください。これにより、私たちはあなたの手助けをしやすくなり、検索のためのエラーメッセージもインデックスに登録します。 – Graham

答えて

1

(私はpgAdminでの推測)あなたはSQLに言語を設定しているが、実際の関数定義では、あなたがplpgsqlを持っている、とは正しい選択です。あなたは関数が書かれている言語をpgAdminで変更するか、単にそれをクエリウィンドウに貼り付けて実行するだけです(うまく動作します)。

EDIT:実際には、codeセクションにあまりにも多くの情報を書き込んでいる可能性があります.pgAdminが多くの情報を埋める可能性が高いからです。 SQLタブに行くと、pgAdminが実行しようとしている実際のクエリが表示され、何も問題ないと確信しています。私の推奨は、codeをSQLエディタでプレーンSQL(またはそれが呼び出されたもの)として実行することです。

関連する問題