Day 24: Oracle Expression Filter


Learning In HomeOriginal Date: 5 Februari 2009

Oracle Expression Filter adalah salah satu fitur database Oracle yang memungkinkan pengerjaan ekspresi yang disimpan sebagai data di dalam tabel. Ekspresi ini bernilai antara TRUE dan FALSE. Kolom yang menampung ekspresi memiliki tipe VARCHAR2. Sebuah tabel dapat mengandung lebih dari satu kolom ekspresi. Sebagai contoh, aku membuat tabel berikut:


CREATE TABLE TBL_USER (
  NAMA VARCHAR2(100),
  PILIHAN VARCHAR2(100)
);

Aku menginginkan kolom PILIHAN berisi nilai ekspresi yang akan dievaluasi oleh Oracle Expression Filter. Untuk itu, aku harus mulai dengan membuat attribute set dan mengisi atribut-atributnya:


BEGIN

dbms_expfil.
create_attribute_set(
 attr_set => 'PilihanUser');

dbms_expfil.
add_elementary_attribute(
attr_set => 'PilihanUser', 
attr_name=> 'NamaBarang', 
attr_type => 'VARCHAR2(100)');

dbms_expfil.
add_elementary_attribute(
attr_set => 'PilihanUser', 
attr_name=> 'Harga', 
attr_type => 'NUMBER(18)');

dbms_expfil.
add_elementary_attribute(
attr_set => 'PilihanUser', 
attr_name=> 'Kategori', 
attr_type => 'NUMBER(5)');  

END;
/

Kode di atas akan membuat sebuah attribute set dengan nama PilihanUser. Di dalam attribute set tersebut, terdapat attribute-attribute seperti NamaBarang, Harga, dan Kategori. Setelah itu, aku akan men-assign attribute set tersebut ke kolom PILIHAN di tabel TBL_USER dengan perintah seperti berikut ini:


BEGIN

dbms_expfil.
assign_attribute_set(
attr_set => 'PilihanUser', 
expr_tab => 'TBL_USER', 
expr_col => 'PILIHAN');

END;
/

Lalu, aku memasukkan data latihan ke TBL_USER seperti:


INSERT INTO TBL_USER VALUES 
('Solid Snake', 
 'Kategori = 10 AND Harga < 4000000');

INSERT INTO TBL_USER VALUES 
('Liquid Snake', 
 'Harga > 2000000');

INSERT INTO TBL_USER VALUES 
('Big Boss', 
 'NamaBarang = ''Calibre GeForce 8800 Ultra''');

Dan aku siap memakai Oracle Expression Filter, seperti pada contoh berikut:


SELECT * FROM TBL_USER WHERE EVALUATE(PILIHAN, 'Harga=>3000000,Kategori=>1,NamaBarang=>''TEST''')=1;

Query di atas akan mengembalikan user Liquid Snake.

Untuk melihat daftar attribute yang ada, aku dapat memeriksa isi view USER_EXPFIL_ATTRIBUTES seperti:


SELECT * FROM USER_EXPFIL_ATTRIBUTES;

Perihal Solid Snake
I'm nothing...

Apa komentar Anda?

Please log in using one of these methods to post your comment:

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

%d blogger menyukai ini: