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

Responder a