Manipulasi Variabel PL/SQL pada Oracle Heterogeneous System

Posted by: on Jun 26, 2008 | 6 Comments

Oracle Heterogeneous System. Saya singkat Oracle HS biar enak nulisnya. Apa itu? Oracle HS adalah sistem yang memungkinkan untuk melakukan manipulasi database lain di luar sistem databse yang sedang dihubungi. Sistem lain itu bisa merupakan database Oracle, atau database non-Oracle, misalnya SQL Server atau bahkan MySQL.

Dengan pengaturan sistem Oracle HS ini, kita bisa melakukan query SQL pada database lain tersebut pada session Oracle kita. Misalnya kita ingin fetch data pada suatu tabel di database lain, maka query-nya akan menjadi semacam ini:

SELECT * FROM rfq@hsmsql

Ada penambahan @hsmsql yang menunjukkan database link Oracle HS yang telah di set-up sebelumnya (setup Oracle HS tidak dibahas pada posting ini).

Nah, masalah terjadi ketika Oracle HS digunakan di dalam script PL/SQL. Oracle HS tidak bisa membaca maupun mengisi variabel-variabel PL/SQL. Perhatikan query-query PL/SQL berikut ini:

SELECT Count( * ) INTO v_count FROM rfq@hsmsql

SELECT * FROM rfq@hsmsql WHERE rfqnum = v_rfqnum

Di query biasa tanpa Oracle HS, query di atas bisa berjalan dengan baik. v_count akan berisi jumlah row yang didapat dari tabel rfq, sedangkan query kedua akan terfilter khusus untuk baris yang memiliki rfqnum sama dengan v_rfqnum. Tapi di Oracle HS tidak. Oracle HS tidak dapat memasukkan jumlah Count( * ) ke dalam variabel v_count dan tidak dapat memfilter record rfqnum dengan isi variabel  v_rfqnum.

Solusinya, kita bisa menggunakan mekanisme yang dinamakan Passthrough-SQL. Ada package built-in dari Oracle yang bernama DBMS_HS_PASSTHROUGH yang khusus digunakan untuk mendapatkan data dan/atau sebaliknya dari/ke Oracle HS. Berikut ini adalah cara untuk mendapatkan hasil dari Oracle HS dan disimpan pada variabel PL/SQL

con := DBMS_HS_PASSTHROUGH.open_cursor@hsmsql.world;

DBMS_HS_PASSTHROUGH.parse@hsmsql.world (con,

‘SELECT COUNT( * ) FROM rfq_mxm
WHERE rfqnum = ”’
|| vrfq.rfqnum
|| ””
);

rs := DBMS_HS_PASSTHROUGH.fetch_row@hsmsql.world (con);

DBMS_HS_PASSTHROUGH.get_value@hsmsql.world (con, 1, vcount);

DBMS_OUTPUT.put_line (‘count: ‘ || vcount);

Jika kode di atas dijelaskan secara konseptual, maka langkah-langkahnya adalah sebagai berikut:

  1. Buka kursor HS (pengertian kursor di sini berbeda dengan pengertian PL/SQL cursor)
  2. Query dengan fungsi parse
  3. Tarik hasil setiap baris dan masukkan ke dalam variabel PL/SQL dengan fungsi get_value

Memang jauh lebih rumit, tetapi inilah cara yang paling aman untuk memanipulasi variabel-variabel PL/SQL dengan sistem heterogeneous (Oracle HS).

Artikel terkait:

Ganti Template Lageeee

Posted by: on Jun 25, 2008 | 13 Comments

Sejak Desember 2007 saya mulai memakai theme tiga kolom dan memilih warna biru. Lama-lama kok bosan dan saya agak kesulitan membaca font Verdana 11px yang imut-imut itu di layar monitor LCD 17″ ber-resolusi 1200 x 1024 px. Akhirnya cari-cari theme di themes.wordpress.net, ketemu theme tiga kolom berwarna hijau ini. Sedikit di-hack untuk memenuhi keinginan saya, antara lain:

  • Menambahkan deskripsi blog yang isinya “ngenes” abis itu (kita tidak bisa bla bla…)
  • Pamer foto-foto flickr sayah
  • Last comments
  • Monthly archives
  • Foto-foto flickr di sidebar (menggunakan plugin flickrRSS)
  • Shared items dari Google Reader saya
  • Sedikit bersih-bersih style di sudut sana dan sudut sini

Jadinya, beginilah… cukup memuaskan saya dan memenuhi kebutuhan saya. Hehehehe…

Mengirim Email Lewat Telnet

Posted by: on Jun 25, 2008 | 7 Comments

Jika halaman web menggunakan protokol HTTP sebagai protokol komunikasi data, maka lalu lintas email menggunakan protokol SMTP sebagai jalur komunikasi. Namun memang protokol SMTP sedikit kalah populer jika dibandingkan dengan protokol HTTP, padahal keduanya merupakan tulang punggung lalu lintas data internet saat ini.

Protokol SMTP sedikit tidak populer eksplorasinya karena jarang sekali kita memerlukan akses protokol tingkat rendah. Semuanya sudah dibungkus oleh perangkat-perangkat mail client seperti misalnya MS Outlook, Mozilla Thunderbird, GMail, Yahoo! Mail, dsb. Bahkan bagi seorang programmer sekalipun, ia pasti lebih sering melakukan query protokol HTTP tingkat rendah macam GET /index.php HTTP/1.1 daripada melakukan query protokol SMTP semacam HELO mailserver.example.com.

Nah, bagaimana sekarang caranya jika kita ingin mengirim email melalui protokol SMTP? Mungkin kita membutuhkan semacam testing untuk memastikan bahwa mailserver berjalan dengan baik. Yang Anda butuhkan hanyalah dua hal: sebuah command prompt dan pastikan bahwa mailserver yang Anda tuju merelay email dari tempat Anda melakukan perintah protokol SMTP. Tentu saja Anda juga harus diizinkan oleh firewall untuk berkomunikasi keluar-masuk lewat port 25 (port umum SMTP Server).

Sejatinya, langkah-langkah berikut adalah langkah yang dilakukan oleh mail client ketika akan mengirim email. Untuk mekanisme email yang memakai lampiran (attachment), prosesnya sedikit lebih kompleks dan tidak dibahas dalam posting ini. Ini adalah langkah-langkah dasar melakukan pengiriman email sederhana dengan SMTP.

[cmd]> telnet mail.example.com 25

Ini adalah perintah untuk berhubungan dengan mail server di alamat mail.example.com pada port 25. Jika berhasil, Anda akan diberi ucapan selamat datang yang merupakan penjelasan singkat dari mail server, misalnya

220 mail.example.com Microsoft ESMTP MAIL Service, Version: 6.0.3790.1830 ready at  Wed, 25 Jun 2008 14:22:53 +0800

Terlihat di sini bahwa kita telah berhasil menghubungi mailserver mail.example.com, dengan jenis server Microsoft ESMTP MAIL Service (ini bawaan Internet Information Service (IIS)-nya Microsoft). Langkah berikutnya, ketik

HELO mail.example.com

Saya nggak tahu siapa penemu protokol ini. Pasti orangnya ceria dan suka humor. Untuk memberi tahu kalau kita ingin mengirim email menggunakan server mail.example.com, kita harus berbaik-baik dengan dia dengan menyapa, “Helo…” ) . Dan balasan dari server kalau dia siap mengirimkan email tak kalah kocak:

250 mail.example.com Hello mail.example.com [127.0.0.1], pleased to meet you

Itu tadi adalah balasan dari Sendmail. Kemudian ketikkan nama pengirim dan nama yang akan kita tuju:

MAIL FROM: sender@example.com
RCPT TO: recipient@example.com

Jika berhasil, respon dari mail server semacam ini:

250 2.1.0 sender@example.com… Sender ok
250 2.1.0 recipient@example.com… Recipient ok

Bagian berikutnya adalah isi email itu sendiri. Perintahnya adalah

DATA

Kemudian tulis isi email yang akan dikirimkan, termasuk header seperti Subject, Content-Type, dll dituliskan di bagian DATA ini. Akhir dari bagian ini ditandai dengan titik tunggal (.) pada satu baris baru. Misalnya:

Subject: Tes Pengiriman Email [tekan enter dua kali]

Isi email akan ditulis di sini dan diakhiri dengan tanda titik tunggal di baris baru.
.

Respon dari mail server jika isi telah diterima adalah semacam ini:

250 2.6.0 <BDKMAX01DTVuTxkzodI00000009@bdkmax01.corp.vico.co.id> Queued mail for delivery

Kemudian ketik perintah ini untuk putus hubungan dengan mail server.

QUIT

Jika beruntung — dalam artian email Anda oleh mail server tidak dikategorikan sebagai Bad Mail,  email Anda akan terkirim dengan sukses beberapa saat kemudian. Kalau kata orang Jawa sih: tanpa gantalan wektu. Okeh… enjoy!

Lukisan Jiwa

Posted by: on Jun 24, 2008 | 11 Comments

FLICKR
Lokasi: Waru, Sidoarjo [23 Maret 2008]
Nikon D40 | Sigma 10-20mm HSM

Seandainya tanganku sanggup melukiskan apa yang ada di hatiku
Seandainya kata kata ini cukup untuk mengartikan rasa
Dan saat malam kuterjaga, berharap
Tuhan mempersatukan kita.

Kini,
izinkan aku melihat wajahmu dengan rasa cinta
izinkan aku mengenalmu dari hari ke hari
di sisa hidupku, di sisa hidupmu

Dan izinkan kulukis jiwaku melalui dirimu

[taken from here]

Saya sudah melihat dan membaca puisi ini berkali-kali, tapi hingga sekarang saya masih terheran-heran. Siapa sangka seorang programmer sekaligus network engineer yang begitu freak pemegang CCNA ini adalah sang pujangga yang menulis bait-bait romantis itu. Saya melihat puisi ini waktu hitungan mundur di halaman web itu masih berkisar di angka 1000-an. Waktu berlalu, banyak hal yang telah terjadi. Tak terasa, hitungan mundur itu tinggal tujuh hari lagi. Gerbang menuju kehidupan baru telah terlihat.

Selamat menempuh hidup baru,
Kamas Muhammad dan Purwaning Yudowati

Berkilau

Posted by: on Jun 23, 2008 | 10 Comments

FLICKR
Lokasi: Depan Universitas Borobudur, Kali Malang, Jakarta Timur
Nikon D40 | Nikkor AF-S 55-200mm VR

Bunga identik dengan kelembutan, melankolis, dan romantisme. Ada yang bilang, katakanlah dengan bunga. Konon, bunga bisa mewakili suara hati. Ada pernyataan cinta, persahabatan, suka cita, bahkan duka cita. Namun, bukan berarti saya sedang melankolis ketika memotret bunga ini. Saya hanya menemukannya di toko bunga di pinggir jalan raya Kali Malang. Putih berkilau. Cantik! Ada yang tahu namanya?

TIPS:
Agar mendapatkan background gelap seperti ini, set metering kamera pada mode Spot Metering. Lambangnya kalau di Nikon adalah kotak dengan satu titik di tengah. Buka diafragma pada posisi bukaan terbesarnya (Nilai F kecil). Steady, tahan napas, dan tekan tombol shutter dengan penuh cinta… klik!

Penyeberangan

Posted by: on Jun 21, 2008 | 7 Comments

FLICKR
Lokasi: Depan Pasar Kelandasan, Balikpapan, Kalimantan Timur
Nikon D40 | Nikkor 18-55 mm

Di sebuah penyeberangan jalan di sudut kota Balikpapan. Lalu lintas di jalan ini memang cukup ramai. Maklum, selain sebagai kota pelabuhan di provinsi yang kaya minyak dan gas ini, Balikpapan juga memiliki bandara internasional bernama Sepinggan Airport. Arus masuk dan keluar ke pulau Kalimantan lewat udara mayoritas melalui kota ini. Bahkan jika dibandingkan dengan ibukota Kaltim, Samarinda, Balikpapan jauh-jauh lebih mentereng.

It’s Our June Afternoon

Posted by: on Jun 19, 2008 | 12 Comments

FLICKR
Lokasi: Harapan Jaya, Bekasi Utara
Nikon D40 | Nikkor AF-S 55-200mm VR | Adobe Photoshop CS3

Akhirnya, setelah pertunangan yang diadakan November 2007 lalu (It’s Our November Rain), teman baik saya, Choirul Imam, akan resmi menikahi calon isterinya: Lisa, di Bekasi tanggal 29 Juni 2008 minggu depan. Selamat mengakhiri masa lajang sobat, saatnya menyimpan machine gun-mu yang terkenal itu, dan mencintai isterimu untuk selama-lamanya. Semoga menjadi keluarga yang sakinah, mawadah, dan warahmah. Amin, ya rabbal alamin…

Switch to our mobile site