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

Gespeicherte Postgresql-Prozedur gibt alle Spalten der Tabelle zurück

Wenn Sie ein Ergebnis zurückgeben möchten, müssen Sie return query verwenden in PL/pgSQL wie im Handbuch dokumentiert

CREATE OR REPLACE FUNCTION dwgcould.returnallcolumns(IN sessionId character varying)
  RETURNS SETOF public.mytable AS
$BODY$
BEGIN
  return query --<< this was missing
    SELECT * 
    FROM public.mytable 
    WHERE session_id = returnallcolumns.sessionId 
    ORDER BY pro_id DESC LIMIT 1;
END;
$BODY$
LANGUAGE plpgsql VOLATILE;

Aber Sie brauchen dafür kein PL/pgSQL, eine einfache SQL-Funktion ist effizienter:

CREATE OR REPLACE FUNCTION dwgcould.returnallcolumns(IN sessionId character varying)
  RETURNS SETOF public.mytable AS
$BODY$
    SELECT * 
    FROM public.mytable 
    WHERE session_id = returnallcolumns.sessionId 
    ORDER BY pro_id DESC LIMIT 1;
$BODY$
LANGUAGE sql;