0% menganggap dokumen ini bermanfaat (0 suara)
108 tayangan17 halaman

Panduan Eksepsi dalam PL/SQL

Modul ini membahas tentang penggunaan blok eksepsi dalam PL/SQL untuk menangani kesalahan yang terjadi. Ada dua jenis eksepsi yaitu pre-defined exception yang sudah disediakan oleh Oracle dan user-defined exception yang dibuat sendiri. Blok eksepsi digunakan untuk menangani kesalahan secara terstruktur dengan menentukan tindakan untuk setiap jenis eksepsi yang mungkin terjadi.

Diunggah oleh

Allex
Hak Cipta
© All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PPTX, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
108 tayangan17 halaman

Panduan Eksepsi dalam PL/SQL

Modul ini membahas tentang penggunaan blok eksepsi dalam PL/SQL untuk menangani kesalahan yang terjadi. Ada dua jenis eksepsi yaitu pre-defined exception yang sudah disediakan oleh Oracle dan user-defined exception yang dibuat sendiri. Blok eksepsi digunakan untuk menangani kesalahan secara terstruktur dengan menentukan tindakan untuk setiap jenis eksepsi yang mungkin terjadi.

Diunggah oleh

Allex
Hak Cipta
© All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PPTX, PDF, TXT atau baca online di Scribd

03

Modul ke:

Eksepsi

Fakultas
FASILKOM Sabar Rudiarto, [Link], [Link]

Program Studi
Informatika
Daftar Isi
1. Pendahuluan
2. Pre-defined Exception
3. User-defined Exception
4. Soal Latihan
1. PENDAHULUAN
Dalam pembuatan sebuah Blok PL/SQL, kadang-kadang diperlukan
sebuah blok khusus yang digunakan untuk menjebak error yang
mungkin terjadi. Blok ini disebut blok eksepsi (exception block).
Sedangkan jenis-jenis error yang menyebabkan terhentinya program
secara tidak normal tersebut dikenal dengan eksepsi (exception).
Contoh eksepsi: VALUE_ERROR, ZERO_DIVIDE, TOO_MANY_ROWS, dan
sebagainya.

Tujuan Blok Eksepsi adalah menangani error-error yang telah


didefinisikan menjadi sebuah eksepsi sehingga meskipun terdapat
error, error tersebut tidak akan ditampilkan melainkan dilempar ke
bagian eksepsi.

Jenis Eksepsi :
1. Pre-defined exception
2. User-defined exception
1. PENDAHULUAN
Adapun blok eksepsi adalah sebagai berikut:

EXCEPTION
WHEN eksepsi_pertama THEN
statemen_untuk_mengatasi_eksepsi_pertama;
WHEN eksepsi_kedua THEN
statemen_untuk_mengatasi_eksepsi_kedua;
...
WHEN OTHERS THEN
statemen_untuk_mengatasi_eksepsi_lainnya;
END;
2. Pre-defined Exception
Adalah sebuah eksepsi yang telah didefinisikan atau sudah tersedia
dalam Oracle, sehingga dapat langsung menggunakan tanpa harus
membuatnya terlebih dahulu.
2. Pre-defined Exception
Contoh 1, Tanpa blok eksepsi

DECLARE
X INTEGER;
Y NUMBER;
BEGIN
X := 0;
Y := 1 / X;
DBMS_OUTPUT.PUT_LINE(‘Nilai Y = ‘ || TO_CHAR(Y));
END;
/

Hasil yang muncul dilayar:


ORA-01476 : divisor is equal to zero
2. Pre-defined Exception
Contoh 1, Dengan blok eksepsi

DECLARE
X INTEGER;
Y NUMBER;
BEGIN
X := 0;
Y := 1 / X;
DBMS_OUTPUT.PUT_LINE(‘Nilai Y = ‘ || TO_CHAR(Y));
EXCEPTION
WHEN ZERO_DIVIDE THEN
DBMS_OUTPUT.PUT_LINE(‘Terjadi kesalahan karena terdapat ‘ ||
‘pembagian dengan 0 (NOL) ‘);
END;
/
Hasil yang muncul dilayar:
Terjadi kesalahan karena terdapat pembagian dengan 0 (NOL)
2. Pre-defined Exception
Contoh 2, Tanpa blok eksepsi

DECLARE
X NUMBER;
BEGIN
X := ‘Sabar Rudiarto’;
DBMS_OUTPUT.PUT_LINE(‘Nilai X = ‘ || TO_CHAR(X) );
END;
/

Hasil yang muncul dilayar:


ORA-06502: PL/SQL: numeric or value error
2. Pre-defined Exception
Contoh 2, Dengan blok eksepsi

DECLARE
X NUMBER;
BEGIN
X := ‘Sabar Rudiarto’;
DBMS_OUTPUT.PUT_LINE(‘Nilai X = ‘ || TO_CHAR(X) );
EXCEPTION
WHEN VALUE_ERROR THEN
DBMS_OUTPUT.PUT_LINE(‘Pengisian nilai tidak sesuai dengan ‘ ||
‘tipe variabel’);
END;
/
Hasil yang muncul dilayar:
Pengisian nilai tidak sesuai dengan tipe variabel
2. Pre-defined Exception
Daftar nama eksepsi yang sudah tersedia dalam Oracle:
Nama Eksepsi Kode Error Keterangan

CURSOR_ALREADY_OPEN ORA-6511 Cursor masih dalam keadaan terbuka

DUP_VALUE_ON_INDEX ORA-0001 Duplikasi constraint

INVALID_CURSOR ORA-1001 Membuka cursor yang salah

INVALID_NUMBER ORA-1722 Melakukan operasi numeric pada tipe non-numerik

LOGIN_DENIED ORA-1017 Username / password salah

NO_DATA_FOUND ORA-1403 Tidak terdapat data pada query

NO_LOGGED_ON ORA-1012 Melakukan operasi database ketika tidak terhubung (connect)

PROGRAM_ERROR ORA-6501 Kesalahan internal

ROWTYPE_MISMATCH ORA-6504 Host variable dan cursor mempunyai tipe yang tidak sama

STORAGE_ERROR ORA-6500 Kesalahan internal

TYMEOUT_ON_RESOURCE ORA-0051 Terjadi timeout

TOO_MANY_ROWS ORA-1422 Statemen SELECT INTO yang mengembalikan lebih dari satu baris

TRANSACTION_BACK_ED_OUT ORA-006 Rollback transaksi untuk didealokasikan

VALUE_ERROR ORA-6502 Konversi atau truncation salah

ZERO_DIVIDE ORA-1476 Pembagian dengan nol


3. User-defined Exception
Selain nama-nama eksepsi yang telah didefinisikan atau yang telah
disediakan oleh Oracle, Anda 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 sebagai
berikut :

DECLARE
Nama_eksepsi EXCEPTION;
PRAGMA EXCEPTION_INIT (nama_eksepsi, kode_error);
3. User-defined Exception
Perlu diperhatikan bahwa kode_error harus negative atau
menambahkan tanda minus (-) di depan kode_error tersebut.

Contoh, tanpa blok eksepsi

DECLARE
X ROWID;
BEGIN
SELECT ROWID INTO X FROM ALL_VIEWS;
END;
/

Hasil yang muncul dilayar:


ORA-01445: cannot select ROWID from view of more than one table
3. User-defined Exception
Contoh, Dengan blok eksepsi

DECLARE
eksepsiku EXCEPTION;
PRAGMA EXCEPTION_INIT (eksepsiku,-01445);
X ROWID;
BEGIN
SELECT ROWID INTO X FROM ALL_VIEWS;
EXCEPTION
WHEN eksepsiku THEN
DBMS_OUTPUT.PUT_LINE (‘KESALAHAN : Tidak dapat’ ||
‘Menampilkan ROWID dari beberapa tabel atau view’);
END;
/
3. User-defined Exception
Hasil yang muncul dilayar:
KESALAHAN : Tidak dapat Menampilkan ROWID dari beberapa tabel
atau view
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:

DECLARE
S NUMBER;
BEGIN
SELECT ‘TEST’ INTO S FROM DUAL;
DBMS_OUTPUT.PUT_LINE (TO_CHAR(S));
END;
/
4. Jawaban Latihan

DECLARE
S NUMBER;
BEGIN
SELECT ‘TEST’ INTO S FROM DUAL;
DBMS_OUTPUT.PUT_LINE (TO_CHAR(S));
EXCEPTION
WHEN VALUE_ERROR THEN
DBMS_OUTPUT.PUT_LINE(‘Terjadi kesalahan tipe variabel’);
END;
/
Terima Kasih
Sabar Rudiarto, [Link]., [Link].

Anda mungkin juga menyukai