Simplemente tengo una tabla que contiene una lista de países y sus códigos de país ISO. Estoy envolver la consulta en un (función aka) procedimiento almacenado como:¿Cuál es la forma más fácil de devolver un conjunto de registros de un procedimiento almacenado de PostgreSQL?
CREATE OR REPLACE FUNCTION get_countries(
) RETURNS setof record AS $$
SELECT country_code, country_name FROM country_codes
$$ LANGUAGE sql;
El error que estoy consiguiendo es:
ERROR: a column definition list is required for functions returning "record"
Sé que puedo definir un tipo y luego a través del bucle el conjunto de registros es como un cursor, pero IIRC hay una forma mejor de hacerlo en las versiones más nuevas de PostgreSQL (estoy usando 8.4.3) pero estoy tirando de mi cabello tratando de recordar.
Editar:
Esto funciona:
CREATE OR REPLACE FUNCTION get_countries(
) RETURNS setof country_codes AS $$
SELECT country_code, country_name FROM country_codes
$$ LANGUAGE sql;
Nota del "devuelve SETOF [nombre de la tabla]". Pero no parece ser el más flexible. Se derrumba si intento devolver una combinación de varias tablas.
posible duplicado de [Declaración de la estructura tuple de un registro en PL/pgSQL] (http://stackoverflow.com/questions/11907563/declaring-the-tuple-structure-of-a-record-in-pl- pgsql) –