PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Wie gibt man mehrere Zeilen aus der PL/pgSQL-Funktion zurück?

Nach dem Beheben der Fehler @Pavel hat darauf hingewiesen , definieren Sie auch Ihren Rückgabetyp oder Sie müssen bei jedem Aufruf eine Spaltendefinitionsliste mitliefern.

Dieser Aufruf:

SELECT * FROM get_object_fields()

... setzt voraus, dass Postgres weiß, wie man * expandiert . Da Sie anonyme Datensätze zurückgeben, erhalten Sie eine Ausnahme:

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

Eine Möglichkeit (von mehreren), dies zu beheben, ist 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;

Funktioniert genauso für SQL-Funktionen.

Verwandte: