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

Responder a