Senin, 13 Januari 2020

Looping Insert dengan beberapa kondisi atau fungsi - PostgreSQL

DO $$
DECLARE
   iterator INTEGER; 
    noreg varchar;
    idnsb int;
          cur2 cursor for SELECT "NO_REG", CAST("RECID" AS INT) FROM migrasi.tmp_nasabah;
BEGIN
    iterator :=10000; -- atur sequence m_nasabah_perorangan_personal
    open cur2;
Loop   
    fetch next from cur2 into noreg, idnsb;
    EXIT WHEN NOT FOUND;
   
INSERT INTO m_nasabah_perorangan_personal
(id_entry,id_update,d_entry,d_update,jenis_kelamin,nama_ibu_kandung,nama_pasangan,no_identitas_pasangan,perjanjian_pisah_harta,status_perkawinan,tgl_lahir,tempat_lahir,tgl_lahir_pasangan,id_agama,id_kota_kabupaten_lahir,id_kota_kabupaten_lahir_pasangan,id_nasabah_perorangan,id_pendidikan,id_propinsi_lahir,id_propinsi_lahir_pasangan,id_nasabah_perorangan_personal)
select
'MIGRASI','MIGRASI',NOW(),NOW(),CAST(XX."JNS_KELAMI" AS INT),xx."IBU_KANDUN",xx."PSG_NAMA",xx."KTP_PSG",1,CAST(xx."STATUS" AS INT), CAST(xx."TGL_LAHIR" AS DATE),xx."TMP_LAHIR",
(case when xx."TGL_LAHIRPASANGAN"='' then null
            else (CAST(xx."TGL_LAHIRPASANGAN" AS DATE)) end) tgllahirpsg,
(case when xx."AGAMA"= '1' then 94
             when xx."AGAMA"= '2' then 93
              when xx."AGAMA"= '3' then 106
                 when xx."AGAMA"= '4' then 107
                  when xx."AGAMA"= '5' then 297
                     when xx."AGAMA"= '6' then 109
                      when xx."AGAMA"= '7' then 673 end) agama,
(case when yy.idkabupaten is null then (select idkabupaten from migrasi.temp_alamat_bpr)
            else yy.idkabupaten end ) idkabupaten,null, CAST(xx."RECID" AS INT),
(case when xx."GELAR"='0100' then 389
            when xx."GELAR"='0101' then 390
            when xx."GELAR"='0102' then 391
            when xx."GELAR"='0103' then 392
            when xx."GELAR"='0104' then 393
            when xx."GELAR"='0105' then 394
            when xx."GELAR"='0106' then 395
            when xx."GELAR"='0109' then 396
            when xx."GELAR"='' then 389
            else 4 end) id_pendidikan,
(case when yy.idpropinsi    is null then (select idpropinsi from migrasi.temp_alamat_bpr)   
            else yy.idpropinsi end) idpropinsi, null, iterator
from migrasi.tmp_nasabah xx
left join migrasi.tmp_alamat yy on xx."NO_REG"=yy."NO_REG"
where CAST(xx."RECID" AS INT)=idnsb;

    iterator := iterator + 1;

   END LOOP;
         close cur2;
END $$;

Note: Perhatikan tipe data field source dan destination, harus sama

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