Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   SQL Oracle : Изменение функции (http://forum.oszone.net/showthread.php?t=350173)

Kofeinchik 30-11-2021 09:00 2973721

SQL Oracle : Изменение функции
 
Добрый день!

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



Время: 23:45.

Время: 23:45.
© OSzone.net 2001-