Postgresql return 文本变量值

Postgresql return text variable value

我创建了一个函数。首先我声明了一个变量 When a result return 我想 return variable result 但是我得到了一个错误。我该如何解决?

错误

ERROR: column "exist-user" does not exist

CREATE OR REPLACE FUNCTION savepromotionadmin(
     IN p_first_name character varying,
     IN p_last_name character varying,
     IN p_gsm character varying,
     IN p_email character varying,
     IN p_password character varying,
     IN p_level smallint)
  RETURNS text AS
$BODY$      
    DECLARE 
        result text;
        p_user_id bigint=(select id from user where email=p_email and gsm=p_gsm);
        p_check_user bigint=(select id from promotion_admin where email=p_email and gsm=p_gsm);
    BEGIN                   
        IF p_user_id is not null THEN
            IF p_check_user is null THEN            
                insert into promotion_admin(user_id, first_name, last_name, gsm, email, level, password)
                    values(p_user_id, p_first_name, p_last_name, p_gsm, p_email, p_level, md5(p_password));
                IF found THEN 
                    result:="added";                    
                    return result;
                ELSE 
                    result:="error";
                    return result;
                END IF;             
            ELSE 
                result:="exist-user";
                return result;
            END IF; 
        ELSE 
            result:="error";
            return result;
        END IF; 
    END;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 1000;

当您将数据分配给变量时,您使用引号'。引号缩进符号 " 用于指定数据库对象的名称,例如数据库名称,table 名称,列名称。

因此,代码 result:="exist-user" 会将列 exist-user 的数据分配给变量 result,当然该列不存在。

你可以阅读更多here

" 仅适用于 object-names(表格、列等),对于文本,您必须使用 '

result:="added"; 更改为 result:='added'; 一切正常