Anda di halaman 1dari 0

3.

EKSEPSI
3.1 Pendahuluan
Pada pembuatan sebuah blok PL/SQL kadang-kadang diperlukan
sebuah blok khusus yang digunakan untuk menjebak error yang
mungkin terjadi di dalam blok PL/SQL Anda, bagian ini disebut blok
eksepsi (exception block). Sedangkan jenis-jenis error yang
menyebabkan terhentinya program secara tidak normal tersebut
dikenal dengan eksepsi (exception). Contoh eksepsi yang terdapat
dalam Oracle adalah seperti VALUE_ERROR, ZERO_DIVIDE,
TOO_MANY_ROWS dan sebagainya yang akan dituliskan pada
subbab selanjutnya.
Bagi Anda yang pernah memprogram dengan bahasa C/C++ pasti
sudah terbiasa dengan penggunaan blok eksepsi yang sering
disebut dengan exception handler ini, yaitu dengan mendefinisikan
blok_try/_except atau_try/_finally (dalam bahasa C) dan blok try/
_except atau try/__finally (dalam bahasa C+ + ).
Tujuan utama dibuat blok eksepsi adalah untuk
menangani error-error yang telah didefinisikan menjadi
sebuah eksepsi, sehingga meskipun dalam blok PL/SQL
Anda terdapat sebuah error, error tersebut tidak akan
ditampilkan melainkan dilempar ke bagian eksepsi. Hal
ini menyebabkan blok PL/SQL Anda akan terhenti
secara normal dengan penampilan pesan-pesan error
yang kita definisikan sendiri dan seakan-akan tidak
terjadi error.
Eksepsi sendiri dibagi ke dalam dua jenis, yaitu :
pre-defined exception dan
user-defined exception.
Adapun blok eksepsi dapat Anda lihat sebagai berikut:
3.2 Pre-defined Exception
Pre-defined exception adalah sebutan bagi eksepsi-
eksepsi yang telah didefinisikan atau sudah tersedia
dalam Oracle, sehingga Anda dapat langsung
menggunakannya tanpa harus membuatnya terlebih
dahulu.
Untuk lebih memahami konsep-konsep eksepsi,
tinjaulah contoh-contoh blok PL/SQL di bawah ini yang
akan dituliskan dalam dua bagian. Bagian pertama
adalah blok PL/SQL tanpa blok eksepsi dan bagian
kedua adalah blok PL/SQL yang menggunakan blok
eksepsi.
Contoh 1
Pada contoh ini akan dibuat sebuah blok PL/SQL yang di
dalamnya terdapat pembagian dengan 0 (nol).
a. Tanpa Blok Eksepsi
Hasil yang tampak di layar SQL*Plus adalah seperti
ditunjukkan gambar terikut.
Pada hasil yang diberikan di atas jelas terlihat
bahwa blok PL/SQL Anda sama sekali tidak
dapat dijalankan karena terdapat error pada
baris ke-6, yaitu error dengan kode ORA-
01476 (divisor is equal to zero"). Dengan kata
lain, blok PL/SQL Anda dihentikan
(terminated) secara tidak normal.
b. Menggunakan Blok Eksepsi
Hasil yang tampak di layar SQL*Plus seperti yang
ditunjukkan gambar berikut.
Pada blok PL/SQL tersebut mula-mula dieksekusi statemen
yang terdapat pada baris ke-I sampai ke-5. Namun dengan
adanya blok eksepsi, setelah menemukan error pada baris
ke-6 program akan meloncat ke blok eksepsi yaitu dengan
mengeksekusi statemen yang didefinisikan untuk nama
eksepsi yang sesuai (dalam hal ini baris ke-10 dan ke-I /).
Jadi, statemen pada baris ke-7 di atas tidak akan pernah
dieksekusi. Selain itu Anda juga melihat bahwa blok PL/SQL
dapat berjalan dengan baik atau normal seakan-akan tidak
terdapat error di dalamnya. Sebagai bukti pernyataan ini
adalah pada hasil di atas ditunjukkan informasi dengan
pesan PL/SQL procedure successfully completed.
Contoh 2
Pada contoh ini akan diterangkan tentang
eksepsi VALUE_ERROR dengan mengambil
masalah proses memasukkan teks ke variabel
yang bertipe numerik (NUMBER).
a. Tanpa Blok Eksepsi
Hasil yang tampak di layar SQL*Plus seperti
ditunjukkan gambar berikut.
Error yang terjadi di atas disebabkan oleh
pengisian nilai terhadap variabel X (baris ke-
4), yaitu yang seharusnya bertipe numerik
(NUMBER) tetapi diisi dengan nilai yang
bertipe karakter (CHAR atau VARCHAR2).
b. Menggunakan Blok Eksepsi
Hasil yang tampak di layar SQL*Plus seperti
ditunjukkan gambar berikut.
Adapun daftar nama eksepsi yang sudah
tersedia dalam Oracle (pre-defined exception)
seperti ditunjukkan pada tabel berikut ini.
3.3 User-defined Exception
Selain nama-nama eksepsi yang telah
didefinisikan atau disediakan dalam Oracle
(pre-defined exception). Anda juga dapat
membuat eksepsi sendiri sesuai keperluan
atau kasus yang Anda hadapi, eksepsi
semacam ini disebut user-defined exception.
Untuk membuat sebuah eksepsi. Anda harus mendeklarasikan
sebuah variabel yang bertipe EXCEPTION sebagai nama
eksepsi dan dihubungkan dengan kode error dari Oracle
dengan cara menggunakan statemen PRAGMA
EXCEPTION_INIT pada bagian deklarasi dari sebuah blok
PL/SQL. Adapun sintak umum untuk pendeklarasiannya
adalah sebagai berikut.
Perlu diperhatikan bahwa kode_error harus
negatif atau Anda harus menambahkan tanda
minus (-) di depan kode_error tersebut.
Contoh blok PL/SQL yang menggunakan user-
defined exception dapat Anda lihat berikut.
Untuk lebih memahami konsep pembuatan
eksepsi ini, buatlah sebuah blok PL/SQL
dengan menggunakan sintak berikut.
Pesan error yang dimunculkan adalah cannot select ROWID front view ofmore than
one tahle dengan kode_error ORA-01445. Sekarang coba buat sebuah blok PL/SQL
yang dapai menangani error tersebut dengan mendefinisikan sebuah eksepsi sendiri
sehingga blok PL/SQL Anda dapat berjalan dengan normal. Sintaknya adalah seperti
tertulis berikut ini.
3.4 Soal Latihan
1. Perbaikilah blok PL/SQL di bawah ini dengan
menambahkan blok eksepsi sehingga eksepsi
yang terjadi dapat diatasi. Blok PL/SQL yang
dimaksud adalah sebagai berikut:

Anda mungkin juga menyukai