从函数返回返回的ID

时间:2014-04-22 12:20:08

标签: postgresql return

我基本上试图从以下函数返回更新的id。以下是我的代码的简化版本:

CREATE FUNCTION confirmUser(_token varchar(255)) RETURNS integer AS $$
BEGIN
   return (UPDATE users SET isConfirmed = true where _token = token RETURNING id));
END;
$$ LANGUAGE plpgsql;

这有什么问题?

1 个答案:

答案 0 :(得分:2)

我认为你不能像这样返回价值。您需要将其存储到变量中,然后返回该变量:

CREATE FUNCTION confirmUser(_token varchar(255)) RETURNS integer 
AS 
$$
declare
   _id integer;
BEGIN
   UPDATE users SET isConfirmed = true where _token = token 
   RETURNING id
   into _id;

   return _id;
END;
$$ 
LANGUAGE plpgsql;

但是你不需要PL / pgSQL函数。一个普通的SQL函数也可以这样做:

CREATE FUNCTION confirmUser(_token varchar(255)) RETURNS integer 
AS 
$$
   UPDATE users SET isConfirmed = true where _token = token 
   RETURNING id
$$ LANGUAGE sql;

但你必须确保token是唯一的,否则会失败。