Jumat, 29 November 2019

Looping Pakai Row_Number dan Concat - PostgreSQL

-- UPDATE NO_KTP AGAR 16 DIGIT, ANGKA TERKAHIR AMBIL DARI ROW_NUMBER
DO $$
DECLARE
    urut VARCHAR;
    NOREG VARCHAR;
        CUR1 CURSOR FOR SELECT "NO_REG", row_number() over (order by "NO_REG") as urutan FROM (   
select "NO_REG","NO_KTP",LENGTH("NO_KTP") AS KTP from "NSB_P") A
WHERE KTP<>16;
BEGIN
OPEN CUR1;
LOOP
    FETCH  next from CUR1 INTO NOREG, urut;   
    EXIT WHEN NOT FOUND;
   
        IF LENGTH(urut)=1 THEN
        UPDATE "NSB_P"
        SET "NO_KTP"=CONCAT('030100000000000',urut)
        WHERE "NO_REG"=NOREG;
    END IF;
   
   
    IF LENGTH(urut)=2 THEN
    UPDATE "NSB_P"
        SET "NO_KTP"=CONCAT('03010000000000',urut)
        WHERE "NO_REG"=NOREG;
    END IF;
       
        IF LENGTH(urut)=3 THEN
    UPDATE "NSB_P"
        SET "NO_KTP"=CONCAT('0301000000000',urut)
        WHERE "NO_REG"=NOREG;
    END IF;
   
    IF LENGTH(urut)=4 THEN
    UPDATE "NSB_P"
        SET "NO_KTP"=CONCAT('030100000000',urut)
        WHERE "NO_REG"=NOREG;
    END IF;
   
        IF LENGTH(urut)=5 THEN
    UPDATE "NSB_P"
        SET "NO_KTP"=CONCAT('03010000000',urut)
        WHERE "NO_REG"=NOREG;
    END IF;


END LOOP;
CLOSE CUR1;
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