¿Puedes ayudarme con mi problema sobre el cursor en PL/SQL?
Hola espero me puedas ayudar sobre un cursor en PL/SQL, tengo el siguiente cursor:
Declare
Cursor jh is
select distinct(locn) locn,pno,(sum(bookchg)*-1) tot_fwss,
auddate fecha_f ,(sum(bookchg)*-1)*(landus) costo_fw
from iaudit
where ttype = 219
group by locn,pno,bookchg,landus,auddate;
begin
for fwws in jh loop
update retrob_2
set totmes = fwws.tot_fwss,
fecha_fw = fwws.fecha_f,
costo_u = fwws.costo_fw,
acu_usado = nvl(acu_usado,0) + nvl(fwws.tot_fwss,0)
where tecnico = fwws.locn
and parte = fwws.pno;
end loop;
commit;
end;
/
Este cursor saca unos datos de la tabla IAUDIT y los debe de actualizar en la tabla RETROB_2, la cosa es que solo actualiza el ultimo registro que lee, por ejemplo:
De la tabla IAUDIT tengo estos datos:
select distinct(auddate),locn,sum(bookchg) from iaudit
where locn ='0019'
and pno ='01300067R'
and ttype = 219
group by auddate,locn;
auddat locn sum(bookchg)
------ ----- ------------
020826 0019 -1
020829 0019 -1
020902 0019 -2
020903 0019 -1
020905 0019 -1
020910 0019 -1
020912 0019 -1
020918 0019 -1
Cuando corro el cursor y consulto la tabla RETROB_2 me saca solo esto:
select distinct(fecha_fw),tecnico,sum(totmes) from retrob_2
where tecnico = '0019'
and parte = '01300067R'
group by fecha_fw,tecnico;
FECHA_ TECNI SUM(TOTMES)
------ ----- -----------
020918 0019 1
Como puedes ver solo me actualizo el ultimo que proceso.
En la tabla RETROB_2 tengo estos campos:
Name Null? Type
------------------ -------- ----
Técnico varchar2(5)
SUCURSAL VARCHAR2(7)
GRUPO VARCHAR2(5)
PARTE NOT NULL VARCHAR2(12)
landus number
PRCD VARCHAR2(5)
Físico number
coin number
STQTY NUMBER
RETREQ VARCHAR2(1)
REPIND VARCHAR2(1)
totmes number
DEV_MES NUMBER
SLDNEWS NUMBER
SLDPEND NUMBER
sldioweu number
DADO_MES NUMBER
ACU_USADO NUMBER
ACU_DEV NUMBER
ACU_SLD_PEN NUMBER
FECHA_D DATE
COSTO_D NUMBER
COSTO_U NUMBER
FECHA_FW DATE
La cosa es agregar el registro de LOCN y sus PNO con sus diferentes Fechas, he tratado de insertarlos mediante un insert, pero comoa ves uso acumulados y si los inserto los acumulados no podrían seguir acumulándose.
Podrías ayudarme en esto, ¿cómo hacer un cursor para los actuaize todos los registros que vaya leyendo a al tabla de retrob_2?
Espero me puedas ayudar por que me urge y ya no se que hacer por que ya probé lo que esta a ami alcance, recibe saludos y GRACIAS!
Declare
Cursor jh is
select distinct(locn) locn,pno,(sum(bookchg)*-1) tot_fwss,
auddate fecha_f ,(sum(bookchg)*-1)*(landus) costo_fw
from iaudit
where ttype = 219
group by locn,pno,bookchg,landus,auddate;
begin
for fwws in jh loop
update retrob_2
set totmes = fwws.tot_fwss,
fecha_fw = fwws.fecha_f,
costo_u = fwws.costo_fw,
acu_usado = nvl(acu_usado,0) + nvl(fwws.tot_fwss,0)
where tecnico = fwws.locn
and parte = fwws.pno;
end loop;
commit;
end;
/
Este cursor saca unos datos de la tabla IAUDIT y los debe de actualizar en la tabla RETROB_2, la cosa es que solo actualiza el ultimo registro que lee, por ejemplo:
De la tabla IAUDIT tengo estos datos:
select distinct(auddate),locn,sum(bookchg) from iaudit
where locn ='0019'
and pno ='01300067R'
and ttype = 219
group by auddate,locn;
auddat locn sum(bookchg)
------ ----- ------------
020826 0019 -1
020829 0019 -1
020902 0019 -2
020903 0019 -1
020905 0019 -1
020910 0019 -1
020912 0019 -1
020918 0019 -1
Cuando corro el cursor y consulto la tabla RETROB_2 me saca solo esto:
select distinct(fecha_fw),tecnico,sum(totmes) from retrob_2
where tecnico = '0019'
and parte = '01300067R'
group by fecha_fw,tecnico;
FECHA_ TECNI SUM(TOTMES)
------ ----- -----------
020918 0019 1
Como puedes ver solo me actualizo el ultimo que proceso.
En la tabla RETROB_2 tengo estos campos:
Name Null? Type
------------------ -------- ----
Técnico varchar2(5)
SUCURSAL VARCHAR2(7)
GRUPO VARCHAR2(5)
PARTE NOT NULL VARCHAR2(12)
landus number
PRCD VARCHAR2(5)
Físico number
coin number
STQTY NUMBER
RETREQ VARCHAR2(1)
REPIND VARCHAR2(1)
totmes number
DEV_MES NUMBER
SLDNEWS NUMBER
SLDPEND NUMBER
sldioweu number
DADO_MES NUMBER
ACU_USADO NUMBER
ACU_DEV NUMBER
ACU_SLD_PEN NUMBER
FECHA_D DATE
COSTO_D NUMBER
COSTO_U NUMBER
FECHA_FW DATE
La cosa es agregar el registro de LOCN y sus PNO con sus diferentes Fechas, he tratado de insertarlos mediante un insert, pero comoa ves uso acumulados y si los inserto los acumulados no podrían seguir acumulándose.
Podrías ayudarme en esto, ¿cómo hacer un cursor para los actuaize todos los registros que vaya leyendo a al tabla de retrob_2?
Espero me puedas ayudar por que me urge y ya no se que hacer por que ya probé lo que esta a ami alcance, recibe saludos y GRACIAS!
1 respuesta
Respuesta de Slurm McKenzie
1