From: | Adrian Misael Peña Montero <ampena(at)uci(dot)cu> |
---|---|
To: | Anthony <asotolongo(at)uci(dot)cu> |
Cc: | pgsql-es-ayuda(at)postgresql(dot)org, Pedro Ricardo <hades_inf(at)elhacker(dot)net> |
Subject: | Re: Forma de llamar a una funcion ... |
Date: | 2011-09-10 17:36:59 |
Message-ID: | 1222360891.8795181315676219690.JavaMail.root@ucimail1.uci.cu |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
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
From | Date | Subject | |
---|---|---|---|
Next Message | Jaime Casanova | 2011-09-10 18:40:14 | Re: Muchas BD sobre un servidor !!! |
Previous Message | Anthony | 2011-09-10 16:41:31 | Re: Forma de llamar a una funcion ... |