Selasa, 21 Januari 2020

Looping di dalam Looping - PostgreSQL


--- generate kartu provisi
DO $$
        DECLARE bulan_ke INTEGER; 
        declare hkrtpro record;
        declare noreg VARCHAR;
        declare norek VARCHAR;
        declare cur2 cursor for select cno, nofas from migrasi.tmp_krtpro order by cno;
 begin 

 open cur2;
 loop

     fetch next from cur2 into noreg, norek;
    EXIT WHEN NOT FOUND;
                   
            select cno,nofas, jk_wktawal, tgl_awal, jt_tempo, provisi
            into hkrtpro
            from migrasi.tmp_krtpro where cno=noreg and nofas=norek;   
           
             bulan_ke :=1;

      loop               
            -- insert data kartunya
            insert into migrasi."KRTPRO"
            ("NO_REG",  "NO_REK",  "KODE" ,  "JANGKA",  "KE",  "TGL_DROP",  "TGL_JWL",  "ACR_PROV" ,  "ACR_ADM",  "PROVISI",  "ADM" ,  "PROSES",  "TGL_PROSES",  "USRUPD")       
            select
            cno, nofas,
            '', hkrtpro.jk_wktawal, bulan_ke, hkrtpro.tgl_awal,(hkrtpro.tgl_awal + interval '1 MONTH'),  round((hkrtpro.provisi/hkrtpro.jk_wktawal),0), 0, hkrtpro.provisi, 0, false, null, null
            from migrasi.tmp_krtpro
            where cno=hkrtpro.cno and nofas=hkrtpro.nofas;

            bulan_ke := bulan_ke + 1;
            exit when bulan_ke > hkrtpro.jk_wktawal;
            end loop;
           
            -- update jika ada total provisi kartu beda dengan headernya
             update migrasi."KRTPRO"
 set  "ACR_PROV" = "ACR_PROV" + ((select provisi from migrasi.tmp_krtpro where nofas=norek) - (select sum("ACR_PROV") from migrasi."KRTPRO" where "NO_REK"=norek))
 where "NO_REK" = norek and "KE" = (select "KE" from migrasi."KRTPRO" where "NO_REK"= norek order by "KE" desc limit 1);
           
 end loop ;

close cur2;
END $$;

Tidak ada komentar:

Posting Komentar

Dynamic Query - SQL Server

Berikut adalah contoh dari bentuk dari Dynamic Query di SQL Server yang dibungkus ke dalam Store Procedure:  USE [Data00] GO SET ANSI_NULLS ...

Popular Posts