我试图创建一个函数PostgreSQL来检查用户是否存在于表users中,方法是创建一个返回JSON变量的函数。
CREATE OR REPLACE FUNCTION login( uname character varying(55),pswd character varying(55))
RETURNS json AS
$$
DECLARE
msg json ;
BEGIN
IF ((SELECT COUNT(*) FROM (SELECT * FROM users WHERE username=uname and password=pswd) AS row_count) =1)
THEN
msg="{ 'stat' : 'active' }";
RETURN msg;
ELSE
msg="{ 'stat' : 'inactive' }";
RETURN msg;
END IF;
END;
$$ LANGUAGE plpgsql;
但当我尝试使用它的返回我以下错误:错误:列“{ 'stat':'inactive' }”不存在
1条答案
按热度按时间6tdlim6h1#
在SQL(和PL/pgSQL)中,字符串常量需要用单引号括起来,而JSON对键和值使用双引号,所以
{ 'stat' : 'active' }
也是无效的JSON。您需要:
实际上并不需要该变量,您也可以使用:
注意,使用EXISTS条件可以使IF条件更有效一些: