2017-07-19 144 views
0

我很新,想要教我自己的PostgreSQL。目前我正在嘗試創建一個函數,它根據同一個表中的其他兩列的值更新列。我正在創建函數,因爲我想將其稱爲觸發器,以便在編輯列值時執行。所有的colomns都持有文字。PostgreSQL函數返回類型錯誤

我的代碼是:

CREATE FUNCTION rev_1.update_proceed_column() RETURNS character varying AS 
$BODY$ 
    UPDATE rev_1.catchment_e_gravity_lines SET proceed = 'N/A' 
    WHERE installed = 'YES' AND dependent = 'YES'; 
    UPDATE rev_1.catchment_e_gravity_lines SET proceed = 'N/A' 
    where installed = 'YES' AND dependent ='NO'; 
    UPDATE rev_1.catchment_e_gravity_lines SET proceed = 'YES' 
    WHERE installed = 'NO' AND dependent = 'NO'; 
    UPDATE rev_1.catchment_e_gravity_lines SET proceed = 'NO' 
    WHERE installed = 'NO' AND dependent = 'YES';$BODY$ 
LANGUAGE sql VOLATILE NOT LEAKPROOF; 
ALTER FUNCTION rev_1.update_proceed_column() 
    OWNER TO postgres; 

不過,我得「的返回類型不匹配」的錯誤並不能似乎得到的功能工作。我錯過了什麼嗎?

+0

你的更新查詢不返回任何東西,這意味着這基本上是'void'函數,它應該在頭文件'RETURNS void'而不是'RETURNS character..'中定義。另外,當實際需要返回char/varchar/text時,只需使用'RETURNS text',目前的格式不正確。 –

回答

0

謝謝@KristoMägi,我將字符頭調整爲無效,現在它可以按我的需要工作。