sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Cómo devolver varias filas de la función PL/pgSQL?

Después de corregir los errores señaló @Pavel , también defina su tipo de devolución correctamente, o debe proporcionar una lista de definición de columna con cada llamada.

Esta llamada:

SELECT * FROM get_object_fields()

... asume que Postgres sabe cómo expandir * . Dado que está devolviendo registros anónimos, obtiene una excepción:

ERROR:  a column definition list is required for functions returning "record"

Una forma (de varias) de arreglar esto es con RETURNS TABLE (Postgres 8.4+):

CREATE OR REPLACE FUNCTION get_object_fields()
  RETURNS TABLE (department_id int) AS 
$func$
BEGIN
   RETURN QUERY
   SELECT department_id
   FROM   fact_department_daily 
   WHERE  report_date = '2013-06-07';
END
$func$ LANGUAGE plpgsql;

Funciona para funciones SQL de la misma manera.

Relacionado: