BLOB To CLOB & CLOB To BLOB

Fungsi untuk mengubah blob->clob dan sebaliknya

FUNCTION blob2clob(p_blob IN BLOB) RETURN CLOB IS
 v_clob CLOB;
 v_amount NUMBER DEFAULT 2000;
 v_offset NUMBER DEFAULT 1;
 v_buffer VARCHAR2(32767);
 v_length PLS_INTEGER := dbms_lob.getlength(p_blob);
BEGIN
 dbms_lob.createtemporary(v_clob, TRUE);
dbms_lob.OPEN(v_clob, dbms_lob.lob_readwrite);
WHILE v_offset <= v_length LOOP
 v_buffer := utl_raw.cast_to_varchar2(dbms_lob.substr(p_blob, v_amount, v_offset));
IF length(v_buffer) > 0 THEN
 dbms_lob.writeappend(v_clob, length(v_buffer), v_buffer);
 END IF;
v_offset := v_offset + v_amount;
 EXIT WHEN v_offset > v_length;
 END LOOP;
RETURN v_clob;
 END blob2clob;
----------------------------------------------------------------
 FUNCTION blob_to_clob (blob_in IN BLOB) RETURN CLOB
 AS
 v_clob CLOB;
 v_varchar VARCHAR2(32767);
 v_start PLS_INTEGER := 1;
 v_buffer PLS_INTEGER := 32767;
 BEGIN
 DBMS_LOB.CREATETEMPORARY(v_clob, TRUE);
FOR i IN 1..CEIL(DBMS_LOB.GETLENGTH(blob_in) / v_buffer)
 LOOP
v_varchar := UTL_RAW.CAST_TO_VARCHAR2(DBMS_LOB.SUBSTR(blob_in, v_buffer, v_start));
DBMS_LOB.WRITEAPPEND(v_clob, LENGTH(v_varchar), v_varchar);
v_start := v_start + v_buffer;
 END LOOP;
RETURN v_clob;
END blob_to_clob;

original source: http://mrrame.blogspot.com/2009/09/oracle-how-to-convert-blob-to-clob.html

 

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

Dumping MySQL Stored Procedures, Functions danTriggers

MySQL 5 telah memperkenalkan beberapa fitur baru yang menarik, seperti store procedure dan triger.
Posting ini hanyalah catatan buat saya sendiri biar gak lupa untuk melakukan backup dan melakukan restore dengan myqld dump di windows xp.
Secara default mysqldump akan ikut melakukan backup terhadap triger, tetapi store procedure tidak ikut terbackup.

-routines – FALSE by default
-triggers – TRUE by default

Untuk melakukan backup secara keseluruhan tinggal menambahkan command -routines pada command line.
contoh:

mysqldump  --routines >hasil.sql

Untuk melakukan backup triger dan store procedure saja (jika sudah ada database dan datanya)
contoh:

mysqldump --routines --no-create-info --no-data --no-create-db --skip-opt > hasil.sql