Creo que las funciones generan una transaccion asi que hasta q no
termine de ejecutar no vas a ver reflejados los cambios. Creo que es
asi.

El día 22 de enero de 2009 7:29, Gabriel Ferro
<gabrielrfe...@yahoo.com.ar> escribió:
> Masters tengo la funcion
>
> CREATE OR REPLACE FUNCTION padrones.completadocu()
>   RETURNS void AS
> $BODY$
> declare
> registro RECORD;
> num character varying;
> clav bigint;
> cadena text;
> i integer;
> begin
> FOR registro IN SELECT numdoc,clave from padrones.personas LOOP
>  if (length(registro.numdoc)<12) then
>    num=registro.numdoc;
>    clav=registro.clave;
>    for i in 1..12-length(registro.numdoc) loop
>       num='0'||num;
>    end loop;
>    UPDATE padrones.personas SET numdoc=num WHERE
> padrones.personas.clave=clav;
>    raise NOTICE 'cambio % clave %',num,registro.clave;
> -- else
> --   raise NOTICE 'Nocambio %',registro.numdoc;
>   end if;
> END LOOP;
> raise NOTICE 'FIN PROCESO';
> end;
> $BODY$
>   LANGUAGE 'plpgsql' VOLATILE
>   COST 100;
> ALTER FUNCTION padrones.completadocu() OWNER TO gferro;
>
>
>
> La cosa es que la tabla es de varios Gigas y mientras se esta ejecutando la
> funcion hago un select de un registro que teoricamente ya actualizo, pero me
> muestra los valores viejos de numdoc, crei que la funcion no andaba asi que
> le agregue un EXIT; despues del update y verifique que si actualizo el
> registro que habia encontrado, entonces anda bien
>
> No uso ningun commnit o roolback solo ingreso pgsql -d base -v ON_ERROR_STOP
> y luego select padrones.completadocu();
>
> ¿Esto es normal?
>
> ________________________________
> Yahoo! Cocina
> Recetas prácticas y comida saludable
> Visitá http://ar.mujer.yahoo.com/cocina/
--
TIP 3: Si encontraste la respuesta a tu problema, publícala, otros te lo 
agradecerán

Responder a