Syntax untuk membuat dblink:
create database link db_link connect to userdb identified by password using 'db_dbalias'
Syntax untuk membuat dblink:
create database link db_link connect to userdb identified by password using 'db_dbalias'
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
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
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