Добрый день!
Есть функция представленная ниже , нужно ее переделать так чтобы она выполнялась по джобу (без входных параметров ) и при этом перед апдейтом записывала данные с запроса в другую таблицу допустим (rgrafik_log). Мои ковыряния в данной функции не очень успешны, поэтому прошу помощи. Заранее благодарен за любую помощь.
Код:
function ClearTaskDevelopHandGrafik(i_first_line integer default 0,
i_last_line integer default 0 --
) return integer is
cursor v_cur is
select *
from (select III.*, b.rn npp
from (select distinct v.rgrafik_prm,
v.grafik_prm,
g.rgrafik_nomo,
v.KolvoRul,
v.OstRul,
g.rgrafik_status stasutp,
get_status_grafik(v.rgrafik_prm) stRelm,
g.grafik_dw,
g.grafik_nomo,
g.tgrafik_nomo,
v.zdn_prm,
v.rprt_prm,
v.Smotka,
v.Plavka,
v.Partia,
v.Sortament,
v.rprt_tol,
v.rprt_shrn,
v.Marka,
V.rzdn_prm
from v_grafik v, rgrafik g
where v.rgrafik_prm = g.rgrafik_prm
and v.gagr_kod = 102) III,
(select rgrafik_prm, rownum rn
from (select distinct gr.rgrafik_prm, gr.rgrafik_nomo
from v_grafik gr
where gr.gagr_kod = 102
order by gr.rgrafik_nomo)) b
where III.RGRAFIK_PRM = b.RGRAFIK_PRM
order by III.rgrafik_nomo)
where npp between i_first_line and i_last_line;
begin
message_pkg.send_message('api_dev_pkg.ClearTaskDevelopHandGrafik: begin ' ||
to_char(systimestamp));
for v_row in v_cur loop
if v_row.stasutp = 'ПРИНЯТА К ИСПОЛНЕНИЮ' then
update rgrafik t
set t.rgrafik_status = 'ЗАКРЫТА',
t.rgrafik_dtclose = sysdate
where t.rgrafik_prm = v_row.rgrafik_prm;
end if;
end loop;
commit;
return 1;
exception
when others then
message_pkg.send_message('api_dev_pkg.ClearTaskDevelopHandGrafik: exception' ||
chr(10) || to_char(systimestamp) || chr(10) ||
sqlerrm);
return sqlcode;
end;
end;