Skip site navigation (1) Skip section navigation (2)

Re: ejecutar una consulta creada

From: Alvaro Herrera <alvherre(at)surnet(dot)cl>
To: Julio Rivero <jcrmlima(at)gmail(dot)com>
Cc: Jairo Martín Miguel <jairo010(at)hotmail(dot)com>,pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: ejecutar una consulta creada
Date: 2005-05-25 19:57:27
Message-ID: 20050525195727.GA9316@surnet.cl (view raw or flat)
Thread:
Lists: pgsql-es-ayuda
On Wed, May 25, 2005 at 02:12:10PM -0500, Julio Rivero wrote:
> En tu misma funcion puedes hacer EXEC 'script_sql'

No es EXEC sino EXECUTE; y no puedes simplemente asignar el resultado y
retornar eso, sino que necesitas un FOR EXECUTE <string>; LOOP RETURN
NEXT <foo>; END LOOP; (o algo semejante).  Pero de todas maneras yo
haria lo siguiente:

> On 5/25/05, Jairo Martín Miguel <jairo010(at)hotmail(dot)com> wrote: 

> > declare
> > 
> > seccion alias for $1; -- Parámetro que indica la sección por la que se
> > filtrará.
> > resultado text; -- String donde se construye la solución.
> > 
> > begin
> > 
> > resultado := 'SELECT OK_PERSONAS.nombre, DW_EDT.programa, DW_HORAS.horas
> > FROM OK_PERSONAS INNER JOIN (DW_HORAS INNER JOIN DW_EDT ON
> > DW_HORAS.programa=DW_EDT.programa) ON OK_PERSONAS.persona=DW_HORAS.persona
> > WHERE (OK_PERSONAS.seccion=''' || seccion || ''');';
> 
> -- aqui
>   EXEC resultado;
> 
> return resultado;
> > end;

create function foo(text) returns setof <tipo> language sql as '
select ... WHERE ok_personas.seccion = $1';

Mucho mas sencillo y te evitas invocar plpgsql donde realmente es
innecesario.

-- 
Alvaro Herrera (<alvherre[a]surnet.cl>)
"La experiencia nos dice que el hombre peló millones de veces las patatas,
pero era forzoso admitir la posibilidad de que en un caso entre millones,
las patatas pelarían al hombre" (Ijon Tichy)

In response to

Responses

pgsql-es-ayuda by date

Next:From: Mario Soto Cordones - VenezuelaDate: 2005-05-25 20:24:28
Subject: Re: tipos de datos
Previous:From: Ariel RomeroDate: 2005-05-25 19:49:46
Subject: Sobre php y postgres

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group