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