簡體   English   中英

使用 postgresql function 聲明並返回一個 json 變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM