PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Renvoyer plusieurs valeurs dans une fonction

Vous compliquez trop les choses. Comme vous souhaitez renvoyer plusieurs valeurs, vous devez définir la fonction en tant que returns table ou returns setof . Je préfère le returns table car il vous permet également de définir les noms de colonne du résultat.

Vous n'avez pas non plus besoin de PL/pgSQL pour cela, une fonction SQL simple avec un UPDATE déclaration suffit :

CREATE OR REPLACE FUNCTION assign_task(IN worker text)
  returns table (id bigint)
as
$BODY$
 UPDATE queue
  SET status = 'In progress', worker = $1
  WHERE status = 'New'
  RETURNING queueid;
$BODY$
LANGUAGE sql VOLATILE;