Jumat, 29 November 2019

Looping Angka Urut - PostgreSQL


DO $$
DECLARE
   iterator INTEGER;  -- we can init at declaration time
     idref integer;
    idsandi varchar;
          cur2 cursor for select id_daftar_ref, sandi from  m_referensi_lapbul_ojk_detail_backup where id is NULL;
BEGIN
    iterator :=19;
    open cur2;
Loop   
    fetch next from cur2 into idref, idsandi;
    EXIT WHEN NOT FOUND;   
 
       UPDATE m_referensi_lapbul_ojk_detail_backup
     set id=iterator
         where id is NULL and id_daftar_ref=idref and sandi=idsandi;
      iterator := iterator + 1;
      -- do stuff
   END LOOP;
         close cur2;
END $$;

-------------------------
DO $$
DECLARE
   iterator INTEGER;  -- we can init at declaration time
BEGIN
    iterator :=1;
   WHILE iterator < 999
   LOOP
     insert into temp_urut (count)
     values (iterator);
      iterator := iterator + 1;
      -- do stuff
   END LOOP;
END $$;


----- update angka urut pakai row_number
with new_numbers as (
   select COUNT,
          row_number() over (order by COUNT) as urutan
   from temp_urut
)
update temp_urut
  set no_urut = nn.urutan
from new_numbers nn
where nn.COUNT = temp_urut.COUNT;

-----
DO $$
DECLARE
   iterator INTEGER;
    urut INTEGER;
     cur1 cursor for select count from temp_urut;
BEGIN
iterator :=1;
OPEN Cur1 ;
Loop   
    FETCH  next from Cur1 INTO urut;   
    EXIT WHEN NOT FOUND;
   
     UPDATE temp_urut
     set no_urut=concat('000',iterator)
         where count=urut;
     iterator := iterator + 1;
  END LOOP;
    CLOSE Cur1; 
END $$;

hasilnya
1    0001
2    0002
3    0003
4    0004
5    0005

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