Re: Rendimiento sin COMMIT

From: jcb <jcb(at)greccosoft(dot)es>
To: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Rendimiento sin COMMIT
Date: 2008-06-13 17:19:44
Message-ID: 1213377584.9391.12.camel@hwcasa.a
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda


El vie, 13-06-2008 a las 11:28 -0400, Alvaro Herrera escribió:
> Juan Carlos Barranco de Paz escribió:
>
> > Pero quiero probar modificar mediante un cursor pero me esto volviendo loco
> > con la definición, no se donde esta mal :
> >
> > CREATE OR REPLACE FUNCTION prueba_1(dw01 dw01conf)
> > RETURNS smallint AS
> > $BODY$
> > DECLARE
> > jcb cursor for select *
> > from dw21vent
> > where empresa = dw01.empresa
> > order by empresa,articulo,tiempo for update;
>
> No puedes usar cursores directamente. Haz un
> FOR record IN select * from dw21vent ... LOOP
>
>
De esta manera si me funciona, lo que no consigo, es poder hacer un
cursor for update :

DECLARE
jcb refcursor;
dw21 dw21vent%ROWTYPE;
x
BEGIN

OPEN jcb FOR EXECUTE
'select *
from dw21vent c
where c.empresa ='''|| dw01.empresa ||'''
order by 1,2,3';

LOOP
FETCH jcb INTO dw21
EXIT WHEN NOT FOUND;

............
............
update dw21vent set ... where current of jcb;

Esto aqui deberia de funcionar segun la documentacion, en el
capitulo 38.7.3.3. UPDATE/DELETE WHERE CURRENT OF
, pero tambien hace referecncia al declare del cursor ,
de hay he sacado la ocurrencia de declare anterior

END LOOP;
....

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Jaime Casanova 2008-06-13 20:20:16 Re: Opcion TABLESPACE al crear una tabla.
Previous Message Alvaro Herrera 2008-06-13 17:01:57 Re: Optimizar postgresql para multicore