Re: Forma de llamar a una funcion ...

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

Browse pgsql-es-ayuda by date

  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 ...