PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Restituzione di più valori in una funzione

Hai finito di complicare le cose. Poiché vuoi restituire più valori, devi definire la funzione come returns table o returns setof . Preferisco returns table perché ti permette anche di definire i nomi delle colonne del risultato.

Inoltre non hai bisogno di PL/pgSQL per questo, una semplice funzione SQL con un UPDATE basta un'affermazione:

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;