J'ai simplement une table qui contient une liste de pays et leurs codes pays ISO. J'enroulant la requête dans une procédure stockée (fonction alias) tels que:Quel est le moyen le plus simple de renvoyer un jeu d'enregistrements à partir d'une procédure stockée PostgreSQL?
CREATE OR REPLACE FUNCTION get_countries(
) RETURNS setof record AS $$
SELECT country_code, country_name FROM country_codes
$$ LANGUAGE sql;
L'erreur que je reçois est:
ERROR: a column definition list is required for functions returning "record"
Je sais que je peux définir un type et une boucle à travers le jeu d'enregistrements ressemble à un curseur, mais IIRC il y a une meilleure façon de le faire avec les versions plus récentes de PostgreSQL (j'utilise 8.4.3) mais je m'arrache les cheveux en essayant de m'en souvenir.
Edit:
Cela fonctionne:
CREATE OR REPLACE FUNCTION get_countries(
) RETURNS setof country_codes AS $$
SELECT country_code, country_name FROM country_codes
$$ LANGUAGE sql;
Notez le "RETOURS SETOF [nom de la table]". Mais cela ne semble pas être le plus flexible. Il tombe en morceaux si je tente de retourner une jointure de plusieurs tables.
duplication possible de [Déclaration de la structure de ligne d'un enregistrement dans PL/pgSQL] (http://stackoverflow.com/questions/11907563/declaring-the-tuple-structure-of-a-record-in-pl- pgsql) –