sql >> Databasteknik >  >> RDS >> PostgreSQL

Postgresql lagrad procedur returnerar tabell alla kolumner

Om du vill returnera ett resultat måste du använda return query i PL/pgSQL som dokumenterats i manualen

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;

Men du behöver inte PL/pgSQL för detta, en enkel SQL-funktion kommer att vara mer effektiv:

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. MYSQ &MVC3 SQL anslutningsfel \ ProviderManifestToken men jag använder MySQL

  2. PostgreSQL 9.6:Parallell Sequential Scan

  3. Oracle SQL för att sortera versionsnummer

  4. Hur man kör flera transaktioner samtidigt i PostgreSQL