Postgresql返回文本变量值

时间:2018-03-09 08:39:21

标签: postgresql plpgsql

我创建了一个函数。首先我声明了一个变量当结果返回时我想返回变量结果但是我得到一个错误。我怎么解决?

错误

  

错误:列"存在用户"不存在

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;

2 个答案:

答案 0 :(得分:1)

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

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

您可以阅读更多here

答案 1 :(得分:0)

"仅适用于对象名称(表格,列等),对于您必须使用的文字'

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