Войти

Показать полную графическую версию : SQL Oracle : Изменение функции


Kofeinchik
30-11-2021, 09:00
Добрый день!

Есть функция представленная ниже , нужно ее переделать так чтобы она выполнялась по джобу (без входных параметров ) и при этом перед апдейтом записывала данные с запроса в другую таблицу допустим (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;




© OSzone.net 2001-2012