En el ejemplo que pongo a continuación puedes llamar a la función sin tener que
utilizar el AS, para lograrlo lo que se hace es utilizar tipos de datos
compuestos.
CREATE TABLE ciudad (
id_ciudad integer,
nombre_ciudad text
);
INSERT INTO ciudad VALUES (1, 'Habana'), (2, 'Holguin');
CREATE TABLE persona (
id_persona integer,
nombre_persona text,
id_ciudad integer
);
INSERT INTO persona VALUES (1, 'Adrian', 1),(2, 'Pedro', 2),(3, 'Anthony', 1);
CREATE TYPE persona_ciudad AS (
nombre_ciudad text,
nombre_persona text
);
CREATE LANGUAGE plpgsql;
CREATE FUNCTION personas_por_ciudad (_nombre_ciudad text) RETURNS SETOF
persona_ciudad AS $$
DECLARE
_res persona_ciudad;
BEGIN
FOR _res IN SELECT c.nombre_ciudad, p.nombre_persona FROM ciudad c,
persona p WHERE c.id_ciudad = p.id_ciudad AND c.nombre_ciudad = _nombre_ciudad
LOOP
RETURN NEXT _res;
END LOOP;
END;
$$ LANGUAGE plpgsql;
SELECT * FROM personas_por_ciudad ('Habana');
nombre_ciudad | nombre_persona
---------------+----------------
Habana | Adrian
Habana | Anthony
(2 rows)
Saludos
-
Enviado a la lista de correo pgsql-es-ayuda ([email protected])
Para cambiar tu suscripci�n:
http://www.postgresql.org/mailpref/pgsql-es-ayuda