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

Hvordan returnerer man flere rækker fra PL/pgSQL-funktionen?

Efter at have rettet fejlene påpegede @Pavel , definer også din returtype korrekt, eller du skal angive en kolonnedefinitionsliste med hvert opkald.

Dette opkald:

SELECT * FROM get_object_fields()

... antager, at Postgres ved, hvordan man udvider * . Da du returnerer anonyme poster, får du en undtagelse:

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

En måde (af flere) at rette dette på er med 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;

Virker på samme måde for SQL-funktioner.

Relateret:



  1. Oracle SQL-forespørgselssætning og betingelser med tidsstempler og ISO-datoer

  2. Deltag i 2 sæt baseret på standardrækkefølge

  3. Sende adgangskoder over nettet

  4. Mysql:Opdateringsfelt for seneste rekord