Posts Tagged ‘global temporary table

09
Dec
09

Global Temporary Table

Yup, kali ini gw mau merefresh memori tentang GTT.
Secara umum, karakteristik GTT :
1.Kumpulan data yang kita buat bersifat private, tidak ada gangguan dari luar.
2.Kemudahan menghapus data. Kalau tabel biasa, kita dapat melakukan rollback atau delete. Di GTT, kita dapat men-truncate tabel tanpa takut menhapus data orang lain (session lain).
3.Tidak di-logging
4.Tidak dapat diukur base optimizer (CBO) nya. system tidak mengetahui ada berapa record di tabel.

OK, sekarang gw ingin menghubungkan dalam pemakaian di Oracle Forms.
Katakanlah ada sebuah database datablock DB1 yang diquery menghasilkan puluhan/ratusan ribu record.
Lalu ada sebuah validasi kolom pada saat commit, yakni kolom A yang not null akan terkena proses validasi. Cara yang umum dilakukan adalah me-looping record pada DB1, dan mengecek kolom A tersebut. Tentunya hal ini akan memakan waktu relatif lebih lama dibandingkan dengan GTT. How can?

Caranya adalah dengan meng-create GTT. Lalu kita buat database datablocknya, DB2. Padanannya pada saat query, kita akan melakukan proses insert ke dalam GTT tersebut, dengan acuan execute query pada DB1. Setelah itu, bila user melakukan entry pada kolom A, maka perubahan tersebut sudah tercermin di dalam GTT. Sehingga, pada saat ditekan commit pada Oracle Forms, kita akan melakukan SELECT terhadap GTT yang kolom A nya not null.  Even if, cara ini kelihatannya ribet, tapi akan lebih cepat dalam prosesnya, karena kita hanya akan me-looping record yang sudah terseleksi (WHERE A IS NOT NULL). Setelah itu baru kita lakukan proses INSERT/UPDATE ke tabel DB1.

Cara 1 : DB1 exec query –> User entry –> DB1 For Loop –> Proses Validasi¬† –> Commit

Cara 2 : DB2 insert based on DB1 exec query –> User entry –> Select DB2 For Loop –> Proses Validasi¬† –> update/insert ke DB1 –> Commit




Blog Stats

  • 36,253 hits

RSS World News