Hola felipe. puede agregar un RAISE NOTICE despues del update para mostrar en el log de postgres el valor de la variables así:
RAISE NOTICE ' item % , stk %', fila_item.n_operac,stk; El 23 de julio de 2014, 8:15, Felipe Araoz Ramos <far...@gmail.com> escribió: > Ya lo solucioné > > Habia dos problemas 1) codi=fila_item.codiprod; se cambio por codi*:=* > fila_item.codiprod > 2) faltaba declarar RETURN stk al final del loop, > > Gracias amigos por su ayuda > > > *Felipe Araoz Ramos* > RPM #941990605 / 941990605 > RPC 992760385 > NXT 822*9500 / 998229500 > > > El 22 de julio de 2014, 9:43, Felipe Araoz Ramos <far...@gmail.com> > escribió: > >> Amigo Guillermo >> >> Si esta corregido, pero parece que eso no es el problema, voy a seguir >> revisando. >> >> Saludos >> >> *Felipe Araoz Ramos* >> RPM #941990605 / 941990605 >> RPC 992760385 >> NXT 822*9500 / 998229500 >> >> >> El 22 de julio de 2014, 8:21, Guillermo E. Villanueva < >> guillermo...@gmail.com> escribió: >> >> En >>> codi=fila_item.codiprod; >>> No te faltan los dos puntos? >>> codi:=fila_item.codiprod; >>> >>> Guillermo Villanueva >>> >>> >>> >>> El 21 de julio de 2014, 16:04, Carlos Bazán <info...@vtr.net> escribió: >>> >>>> Como yo lo veo a primeras, no se esta actualizando la variable codi en >>>> codi=fila_item.codiprod; >>>> creo que debería ser codi:=fila_item.codiprod; >>>> >>>> Saludos >>>> >>>> >>>> El 21/07/14 13:29, Felipe Araoz Ramos escribió: >>>> >>>>> Amigos >>>>> >>>>> Estoy creando una funcion, para rrecorrer secuencialmente una tabla, de >>>>> principio a fin, actualizando el campo de stock en cada registro, >>>>> reinicializando la variable a cero cuando encuentra un nuevo producto >>>>> y >>>>> continuar hasta terminar con el ultimo registro de la tabla. No me >>>>> muestra >>>>> error, pero tampoco me esta actualizando el campo de la tabla. que >>>>> podria >>>>> estar mal?. Espero vuestra ayuda. >>>>> >>>>> CREATE Or REPLACE FUNCTION SALDOSTOCK() >>>>> RETURNS INTEGER >>>>> AS $$ >>>>> DECLARE >>>>> codi character(12); >>>>> stk numeric (20,5); >>>>> fila_item infkrdx%ROWTYPE; >>>>> BEGIN >>>>> stk := 0; >>>>> for fila_item in SELECT * FROM INFKRDX LOOP >>>>> codi=fila_item.codiprod; >>>>> /*Acumulo el stock en variable stk */ >>>>> stk := case when fila_item.cod_trans='I' then >>>>> stk+fila_item.cantidad >>>>> else stk-fila_item.cantidad end; >>>>> UPDATE INFKRDX SET ST_FISICO=stk where >>>>> n_operac=fila_item.n_operac; >>>>> if fila_item.codiprod<>INFKRDX.codi then stk := 0; >>>>> end if; >>>>> end loop; >>>>> end; >>>>> $$ >>>>> language 'plpgsql' >>>>> >>>>> Gracias >>>>> >>>>> *Felipe Araoz Ramos* >>>>> >>>>> RPM #941990605 / 941990605 >>>>> RPC 992760385 >>>>> NXT 822*9500 / 998229500 >>>>> >>>>> >>>> >>>> - >>>> Enviado a la lista de correo pgsql-es-ayuda ( >>>> pgsql-es-ayuda@postgresql.org) >>>> Para cambiar tu suscripción: >>>> http://www.postgresql.org/mailpref/pgsql-es-ayuda >>>> >>> >>> >> > -- Raul Andres Gutierrez Alejo