CREATE PROCEDURE "DBA"."pa_tgraaf_update"( in a_skoop integer,in peralg date,in perlop date,in a_id_prog smallint)
BEGIN
  declare ll_id integer;
  declare li_aasta smallint;
  declare ld_akuup date;
  declare ld_lkuup date;
  declare ls_tulnud char(100);
  declare ll_partnr integer;
  declare ll_partnr2 integer;
  declare ll_asutnr integer;
  declare ll_taotnr integer;
  declare err_notfound exception for sqlstate value '02000';
  declare c_gl_pr_kanne_update dynamic scroll cursor for select "id",asutnr,partnr,kuup,kuup2,aasta,taotnr from gl_pr_kanne_update;
  delete from gl_pr_kanne_update;
-- lepnr - asutnr
-- akuup - kuup
-- lkuup - kuup2
-- peatnr - partnr
-- peatnr orig - partnr2
-- tas_s - taotnr
-- eest_aasta - aasta
  insert into gl_pr_kanne_import("id",asutnr,partnr,partnr2,kuup,kuup2,aasta,taotnr)
    select "id",lepnr,0,peatnr,akuup,lkuup,eest_aasta,tas_s
      from pa_tgraaf
      where (pa_tgraaf.akuup<=perlop) and(pa_tgraaf.lkuup>=peralg) and pa_tgraaf.tulnud='import failist 2';
  insert into gl_pr_kanne_update("id",asutnr,partnr,partnr2,kuup,kuup2,aasta,taotnr)
    select max("id"),asutnr,max(partnr),max(partnr2),kuup,kuup2,max(aasta),max(tas_s)
      from gl_pr_kanne_import
      group by asutnr,kuup,kuup2;
  open c_gl_pr_kanne_update;
  gl_pr_kanne_update: loop
    fetch next c_gl_pr_kanne_update into ll_id,ll_asutnr,ll_partnr,ld_akuup,ld_lkuup,li_aasta,li_taotnr;
    if sqlstate = err_notfound then -- kui eof
      leave gl_pr_kanne_update
    end if;
    if ll_id=0 then
      insert into pa_tgraaf(tulnud,lepnr,peatnr,akuup,lkuup,eest_aasta,tas_s)
        values ('import failist 2',ll_asutnr,ll_partnr,ld_akuup,ld_lkuup,li_aasta,li_taotnr)
    else
      if ll_partnr=0 then
        delete from pa_tgraaf where "id"=ll_id
      else
        update pa_tgraaf set peatnr=ll_partnr,eest_aasta=li_aasta,tas_s=li_taotnr where "id"=ll_id
      end if
    end if
  end loop gl_pr_kanne_update;
  close c_gl_pr_kanne_update;
END