Membuat Penomoran Otomatis di tabel Oracle

Pada dasarnya pembuatan nomor dengan format tertentu sercara otomatis dapat dilakukan melalui coding program maupun melalui triger.  Bagi yang memakai database yang tidak support triger mau tidak mau anda harus membuatnya melalui coding program.  Berikut ini salah satu contoh penomoran otomatis yang saya gunakan untuk membuat nomor arsip otomatis.  Nomor akan di format demikian YYYYMMDD-XXXXX.

Penomoran ini saya pergunakan dalam program pengelolaan arsip data kependudukan.  Jadi tiap memasukkan nomor KK dalam kolom NO _KK maka adan di buat nomor arsip dengan fromat seperti diatas.

CREATE TABLE ARSIP
(
  NO_ARSIP   VARCHAR2(14 BYTE),
  NO_KK      VARCHAR2(100 BYTE),
  TGL_ARSIP  DATE,
  KET        VARCHAR2(20 BYTE),
  CATATAN    CLOB
)
TABLESPACE EXAMPLE
PCTUSED    0
PCTFREE    10
INITRANS   1
MAXTRANS   255
STORAGE    (
            INITIAL          64K
            MINEXTENTS       1
            MAXEXTENTS       2147483645
            PCTINCREASE      0
            BUFFER_POOL      DEFAULT
           )
LOGGING
LOB (CATATAN) STORE AS
      ( TABLESPACE  EXAMPLE
        ENABLE      STORAGE IN ROW
        CHUNK       8192
        PCTVERSION  10
        NOCACHE
        STORAGE    (
                    INITIAL          64K
                    MINEXTENTS       1
                    MAXEXTENTS       2147483645
                    PCTINCREASE      0
                    BUFFER_POOL      DEFAULT
                   )
      )
NOCACHE
NOPARALLEL
NOMONITORING;

ALTER TABLE ARSIP ADD (
  CONSTRAINT COSARSIP
 UNIQUE (NO_ARSIP, NO_KK));

CREATE OR REPLACE TRIGGER ARSIP_BARU
BEFORE INSERT
ON ARSIP
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
DECLARE
NO_URUT NUMBER;
KD_ARSIP VARCHAR2 (16);

BEGIN
--SELECT (MAX(TO_NUMBER(SUBSTR(NO_ARSIP,8,5)))+1)KDMAX INTO NO_URUT FROM ARSIP;
SELECT NO_ARSIP INTO KD_ARSIP FROM (
 SELECT KDMAX,(SELECT TO_CHAR(SYSDATE,'YYYYMMDD-')KD FROM DUAL)||
        (CASE  WHEN KDMAX>=0 AND  KDMAX<10 THEN '0000'||KDMAX
                       WHEN KDMAX>=10 AND  KDMAX<100 THEN '000'||KDMAX
              WHEN KDMAX>=100 AND  KDMAX<1000 THEN '00'||KDMAX
              WHEN KDMAX>=1000 AND  KDMAX<10000 THEN '0'||KDMAX
              ELSE TO_CHAR(KDMAX)
                     END)NO_ARSIP 
             FROM (SELECT (NVL(MAX(TO_NUMBER(SUBSTR(NO_ARSIP,10,5))),0)+1)KDMAX FROM ARSIP)
 );
:NEW.NO_ARSIP:=KD_ARSIP;
:NEW.TGL_ARSIP:=SYSDATE ;

END ;
/

Semoga berguna bagi yang membutuhkan

One thought on “Membuat Penomoran Otomatis di tabel Oracle

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s