PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

fonction définie appelée dans un contexte qui ne peut pas accepter un ensemble

  1. Appelez votre Set Returning Function dans une clause FROM.
  2. Spécifiez toujours vos types.

C'est ce qu'on appelle une fonction de retour d'ensemble , mais vous souhaitez spécifier le type composite

C'est tout à fait valable,

RETURNS SETOF RECORD $$

Cependant, vous devrez peut-être l'appeler avec,

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

Le contexte dans lequel vous ne pouvez pas appeler une SRF non typée est celui qui n'a pas de définition de table. Cette syntaxe peut devenir désagréable, il est donc plus simple de modifier RETURNS SETOF RECORD à

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

et utiliser la fonction sans la liste de définition de colonne

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

Trouvez plus d'informations dans la documentation