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

mengenwertige Funktion, die im Kontext aufgerufen wird und keine Menge akzeptieren kann

  1. Rufen Sie Ihre Set-Returning-Funktion in einer FROM-Klausel auf.
  2. Geben Sie immer Ihre Typen an.

Sie wird als Set Returning Function bezeichnet , aber Sie möchten den zusammengesetzten Typ angeben

Dies ist absolut gültig,

RETURNS SETOF RECORD $$

Es kann jedoch sein, dass Sie es mit ,

aufrufen müssen
SELECT email, user_id
FROM 
    app.lookup_email(4,730035455897450,6,'u')
    AS t(email text, user_id integer)

Der Kontext, in dem Sie kein untypisiertes SRF aufrufen können, ist einer, der keine Tabellendefinition hat. Diese Syntax kann unangenehm werden, daher ist es einfacher, RETURNS SETOF RECORD zu ändern zu

RETURNS TABLE(email text, user_id integer) AS $$

und verwenden Sie die Funktion ohne die Spaltendefinitionsliste

SELECT email, user_id
FROM app.lookup_email(4,730035455897450,6,'u')

Weitere Informationen finden Sie in den Dokumenten