[英]Declare and return a json variable with postgresql function
我正在嘗試創建一個 function PostgreSQL 通過創建一個返回 JSON 變量的 function 來檢查表用戶中是否存在用戶。
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'}”不存在
在 SQL(和 PL/pgSQL)中,字符串常量需要用單引號括起來。 而 JSON 對鍵和值使用雙引號,因此{ 'stat': 'active' }
也是無效的 JSON。
你需要:
msg := '{"stat": "active"}';
該變量並不是真正需要的,您也可以使用:
return '{"stat": "active"}';
請注意,使用 EXISTS 條件可以使 IF 條件更有效:
if exists (SELECT * FROM users WHERE username=uname and password=pswd)
then
...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.