2017-08-11 36 views
0

目標是在PostgreSQL中導入和使用過程(通過pgAdmin和Shell)。我的實驗結束於錯誤screen of mistake here。的代碼(從教程)在PostrgeSQL中推廣程序

例子:

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中更改寫入函數的語言,或者將其簡單地粘貼到查詢窗口並執行(工作得很好)。

編輯:其實,你可能已經放在code部分太多,因爲pgAdmin可能會爲你填充很多。如果您轉到SQL選項卡,您會看到pgAdmin正在嘗試執行的實際查詢,並且我相信這沒什麼好處。我的建議是隻在SQL編輯器中執行code作爲普通的SQL(或任何它所稱的)。