我正在尝试检查在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 …