如何使用带 OUT 参数的 SELECT 语句?

How to use SELECT statement with OUT parameters?

我正在尝试从 OUT game_name 参数中的游戏 table 获取游戏名称列,该参数使用 SELECT 语句。遗憾的是,我在 "SELECT":

附近遇到错误
CREATE OR REPLACE FUNCTION public.toggle(uid numeric, gid NUMERIC, OUT follow integer, OUT game_name TEXt)
    LANGUAGE plpgsql
AS $$
    BEGIN
perform FROM game_follows WHERE user_id = uid and game_id = gid;
    IF NOT FOUND THEN
        INSERT INTO game_follows(user_id, game_id) VALUES(uid, gid);
        follow := 1;
        game_name := SELECT name FROM games WHERE id = gid;

    ELSE
         DELETE FROM game_follows WHERE user_id = uid and game_id = gid;
        follow := 0;
        game_name := SELECT name FROM games WHERE id = gid;
    END IF;
    END;
$$

我想要 return 两个值:如果正在关注游戏以及游戏名称是什么,然后我会通过 API.

发回

这段代码看起来有点奇怪,但可以修复。您正在搜索 SELECT INTO

BEGIN
  IF NOT EXISTS(SELECT * 
                  FROM game_follows 
                 WHERE user_id = uid and game_id = gid)
  THEN
    INSERT INTO game_follows(user_id, game_id) VALUES(uid, gid);
    follow := 1;
  ELSE
     DELETE FROM game_follows WHERE user_id = uid and game_id = gid;
     follow := 0;
  END IF;
  -- ANSI syntax
  game_name := (SELECT name FROM games WHERE id = gid);
  -- or Postgres/Oracle syntax
  SELECT name INTO game_name FROM games WHERE id = gid;
  -- Postgres syntax
  SELECT name FROM games WHERE id = gid INTO game_name;
END;

变量follow应该是boolean。然后在代码中应该有 follow := true else follow := false.