小编Dea*_*Eye的帖子

使用PL / pgSQL检查密钥是否存在于JSON中?

我正在尝试检查在PL / pgSQL函数中作为参数发送的JSON中是否存在密钥。

这是功能。

CREATE FUNCTION sp_update_user(user_info json) RETURNS json
    LANGUAGE plpgsql
    AS $$
    BEGIN
    PERFORM user_info->>'lastname';
    IF FOUND
    THEN
      UPDATE users SET lastname = user_info->>'lastname' WHERE id = sp_update_user.user_id;
    END IF;

    PERFORM user_info->>'firstname';
    IF FOUND
    THEN
      UPDATE users SET firstname = user_info->>'firstname' WHERE id = sp_update_user.user_id;
    END IF;

    RETURN row_to_json(row) FROM (SELECT true AS success) row;
END;$$;
Run Code Online (Sandbox Code Playgroud)

我尝试使用PERFORM-clause,但是即使json键不存在,该IF FOUND子句中的语句也会执行。

我试图PERFORM user_info->>'firstname' INTO myvar;检查变量内容,但会触发错误ERROR: query "SELECT user_info->>'firstname' INTO myvar" is not a SELECT …

postgresql json plpgsql postgresql-9.3

5
推荐指数
1
解决办法
8551
查看次数

标签 统计

json ×1

plpgsql ×1

postgresql ×1

postgresql-9.3 ×1