2017-07-19 203 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,我将字符头调整为无效,现在它可以按我的需要工作。