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 <[email protected]> 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 < > [email protected]> 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 <[email protected]> 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 ( >>> [email protected]) >>> Para cambiar tu suscripción: >>> http://www.postgresql.org/mailpref/pgsql-es-ayuda >>> >> >> >
