sql >> Databáze >  >> RDS >> PostgreSQL

Postgresql uložená procedura vrátí všechny sloupce tabulky

Pokud chcete vrátit výsledek, musíte použít return query v PL/pgSQL jak je zdokumentováno v návodu

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;

K tomu ale nepotřebujete PL/pgSQL, efektivnější bude jednoduchá funkce SQL:

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;



  1. Může MySQL používat indexy, když mezi podmínkami existuje NEBO?

  2. Existuje způsob, jak použít dplyr::bind_rows bez shromažďování datových rámců z databáze?

  3. Vyberte první nenulovou buňku ze dvou sloupců v PostgreSQL

  4. Potřebuji pomoc s tímto dotazem MySQL. Hledání uživatelů, kteří jsou k dispozici v určitou dobu