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';
一切正常
我创建了一个函数。首先我声明了一个变量 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';
一切正常