Upload
hary-cahyono-harysmatta
View
6
Download
0
Embed Size (px)
DESCRIPTION
Catatan kecil perihal SQL/ Procedural Language
Citation preview
1 PL/ SQL on tifosilinux.wordpress.com
Mengenal PL/ SQL
Saya tidak bisa menemukan fitur ini di dalam MySQL (bisa dibaca: Maisikwel) atau sebenarnya ada tapi
saya belum memahaminya atau apa. Jika menemukan sebuah case yang rumit, kebanyakan saya
gunakan saja nested query, indexing, Commit (biasanya setting autocommit yang tidak ke zero atau nol
dapat diberlakukan guna memastikan setiap perubahan transaksi yang terjadi adalah lengkap adanya)
guna mencapai optimisasi.
Penjelasan sedikit:
Saat setelah proses inserting data kedua pada table customer, kita melakukkan ‘commit;’ pada transaksi
yang artinya sistem menerima segala perubahan berupa masukkan data ke table customer. Setelah itu
2 PL/ SQL on tifosilinux.wordpress.com
kita coba set autocommit ke nilai nol guna mematikan kegiatan perubahan pada transaksi didalam table
setelah data kedua masuk. Jadi, ketika kita melakukan rollback pada data ketiga dst, akan
mengembalikan data dimana saat terakhir data di ‘commit;’.
Tapi sekarang saya menemukan ini lagi di ORACLE. Tidak mengapa saya menggunakan WINDOWS 7
dibandingkan Linux karena kenyataannya hal ini hanya untuk menambah referensi saya, tidak untuk
di’bisniskan. Biasanya untuk skala coporate yang berbasiskan Linux menggunakan MySQL baik itu
MariaDB, MongoDB, ataupun postgreSQL sebagai basis data nya. Tidak masalah, karena bisa di convert
menggunakan aplikasi dari ORACLE dimana support nya sudah banyak sekali (tidak saya rinci disini).
Meskipun ada beberapa *TRIAL_COLUMN yang muncul saat selesai konversi, namun saya yakin pasti
ada setting yang saya lewatkan. (Sebagai catatan saat proses konversi MySQL ke ORACLE, masukkan SID
nya melalui parameter yang dijalankan pada screen capture berikut)
3 PL/ SQL on tifosilinux.wordpress.com
Baik, agar tidak lebih out of topic, langsung saja saya coba sedikit paparkan.
PL/ SQL atau Procedural Language to Structured Query Language adalah sebuah teknologi dari ORACLE
(lagi2 ORACLE, ingin sekali bekerja di perusahaan ini) yang memperbolehkan kita melakukan
pemrograman layaknya C, FORTRAN, COBOL dan lainnya. Konsepnya seperti ini :
PL/ SQL dapat mengirimkan beberapa/ sekumpulan statemen sekaligus ke dalam basis data, tentunya ini
berguna mereduksi waktu perjalanan data. Blok PL/ SQL sendiri memiliki bagian seperti berikut:
4 PL/ SQL on tifosilinux.wordpress.com
DECLARE
- Berisi deklarasi variable, konstanta, prosedur, atau fungsi
BEGIN
- Statemen yang akan di eksekusi
EXCEPTION
- Berisi perintah untuk mengatasi error yang mungkin terjadi
END
Oke, untuk pertama kali menggunakan SQL Command Line, kita harus connect terlebih dahulu ke system
dan melakukan setting output ke server, silahkan melihat gambar berikut:
Kondisi Percabangan dengan IF, kondisi ‘if’ biasanya identik dengan percabangan, kurang bisa disebut
sebagai kondisi pilihan karena jika ada kondisi yang tidak tepat, akan di arahkan ke cabang yang lebih
tepat, sedangakan statement itu sendiri sejatinya tidak dapat memilih. Semoga anda tidak bingung
dengan kalimat saya. Berikut sampel kondisi percabangan dan looping menggunakan ‘for’ yang coba
saya tampilkan:
5 PL/ SQL on tifosilinux.wordpress.com
Pembuatan Prosedur dan Fungsi, didalam PL/ SQL dapat dibuat sebuah blok yang dapat berdiri sendiri
dan disimpan sebagai sebuah objek di dalam basis data untuk melakukan sebuah tugas tertentu. Hal ini
membuat kode yang kita buat lebih bersifat modular sehingga mudah kita maintain. Saya coba
tampilkan kembali (Masih menggunakan data sebelumnya):
6 PL/ SQL on tifosilinux.wordpress.com
Kita buat prosedur diatas dengan nama cari_passenger dan cukup memanggilnya dengan parameter
‘exec’. Menarik bukan ??, untuk penjelasan apa manfaat dari sintaks ‘%TYPE’ akan kita bahas lain kali
pada kategori cursor di PL/ SQL.
Bagian ‘fungsi ini membuat kita ‘makin membuka mata untuk program modular di PL/ SQL dimana kita
dapat masukkan fungsi yang telah dibuat ke blok BEGIN (tempat statemen yang akan di eksekusi).
Perbedaannya adalah cara pemanggilan fungsi yang tidak sama dengan prosedur. Lihat tampilan berikut:
7 PL/ SQL on tifosilinux.wordpress.com
Trigger, adalah blok PL/ SQL yang disimpan dalam basis data dan akan diaktifasi saat kita melakukkan
statemen-statemen dalam SQL seperti DELETE, UPDATE, atau INSERT (DML/ Data Manipulation
Language) namun memiliki batasan dalam CREATE, ALTER, atau DROP (DDL/ Data Definition Language)
serta terbatas juga didalam COMMIT, GRANT, ROLLBACK dll (DCL/ Data Control Language). Saya
menyebut Trigger ini sebuah ‘pemicu’.
Trigger benar-benar berguna bagi kita yang sedang membuat aplikasi yang membutuhkan validasi dalam
prosesnya. Ada beberapa daftar event yang harus diperhatikan dalam penggunaan trigger:
Nama Event Keterangan
BEFORE INSERT Diaktifkan sekali sebelum statemen INSERT
AFTER INSERT Diaktifkan sekali setelah statemen INSERT
BEFORE UPDATE Diaktifkan sekali sebelum statemen UPDATE
AFTER UPDATE Diaktifkan sekali setelah statemen UPDATE
8 PL/ SQL on tifosilinux.wordpress.com
BEFORE DELETE Diaktifkan sekali sebelum statemen DELETE
AFTER DELETE Diaktifkan sekali setelah statemen DELETE
9 PL/ SQL on tifosilinux.wordpress.com
Diakui masih banyak yang harus dijelaskan perihal fungsi sintaks ‘%TYPE’ didalam cursor dan ‘:new’
didalam record, InsyaAllah akan saya update artikel ini.
Regards
Hary
10 PL/ SQL on tifosilinux.wordpress.com
Referensi :
Raharjo Budi, Heryanto Imam, Menguasai ORACLE SQL dan PL/ SQL, Informatika, 2009.