Memperkenalkan PL/SQL Exception
Dalam PL / SQL, segala jenis kesalahan diperlakukan sebagai pengecualian. Pengecualian didefinisikan sebagai kondisi khusus yang mengubah alur eksekusi program. PL / SQL memberi Kamu cara yang fleksibel dan ampuh untuk menangani pengecualian semacam itu.
PL / SQL menangkap dan menangani pengecualian dengan menggunakan exception handler architecture. Kapan pun pengecualian terjadi, hal itu dinaikkan. Penghentian eksekusi blok PL / SQL saat ini, kontrol dilewatkan ke bagian terpisah yang disebut bagian pengecualian.
Di bagian pengecualian, kamu dapat memeriksa pengecualian apa yang telah terjadi dan menanganinya dengan tepat. Arsitektur pengendali pengecualian ini memungkinkan pemisahan logika bisnis dan kode penanganan pengecualian sehingga membuat program lebih mudah dibaca dan dipelihara.
Ada dua jenis pengecualian:
- Pengecualian sistem: pengecualian sistem dinaikkan oleh PL / SQL run-time saat mendeteksi kesalahan. Misalnya, NO_DATA_FOUND exception dinaikkan jika kamu memilih catatan yang tidak ada dari database.
- Pengecualian yang ditentukan oleh programmer: pengecualian yang ditentukan oleh programmer ditentukan oleh kamu dalam aplikasi tertentu. Kamu dapat memetakan nama pengecualian dengan kesalahan Oracle tertentu menggunakan EXCEPTION_INIT pragma. Anda juga dapat menetapkan nomor dan deskripsi ke pengecualian menggunakan RAISE_APPLICATION_ERROR.
Mendefinisikan PL/SQL Exception
Pengecualian harus didefinisikan sebelum dapat diajukan. Oracle menyediakan banyak pengecualian standar pada STANDARD package. Untuk menentukan pengecualian, kamu bisa menggunakan EXCEPTION keyword seperti di bawah ini:
EXCEPTION_NAME EXCEPTION;
Untuk meningkatkan pengecualian yang telah kamu definisikan, kamu bisa menggunakan pernyataan RAISE sebagai berikut:
RAISE EXCEPTION_NAME;
Di bagian exception handler, kamu bisa menggunakan exception seperti biasa. Contoh berikut menggambarkan pengecualian yang ditentukan oleh pemrogram. Kami mendapatkan gaji seorang karyawan dan memeriksanya dengan gaji di tempat kerja.
Jika gaji di bawah kisaran, kita naikkan pengecualian BELOW_SALARY_RANGE. Jika gaji di atas kisaran, kami meningkatkan pengecualian ABOVE_SALARY_RANGE hanya membuatnya sederhana untuk demonstrasi.
SET SERVEROUTPUT ON SIZE 100000;
DECLARE
-- define exceptions
BELOW_SALARY_RANGE EXCEPTION;
ABOVE_SALARY_RANGE EXCEPTION;
-- salary variables
n_salary employees.salary%TYPE;
n_min_salary employees.salary%TYPE;
n_max_salary employees.salary%TYPE;
-- input employee id
n_emp_id employees.employee_id%TYPE := &emp_id;
BEGIN
SELECT salary,
min_salary,
max_salary
INTO n_salary,
n_min_salary,
n_max_salary
FROM employees
INNER JOIN jobs ON jobs.job_id = employees.job_id
WHERE employee_id = n_emp_id;
IF n_salary < n_min_salary THEN
RAISE BELOW_SALARY_RANGE;
ELSIF n_salary > n_max_salary THEN
RAISE ABOVE_SALARY_RANGE;
END IF;
dbms_output.put_line('Employee ' || n_emp_id ||
' has salary $' || n_salary );
EXCEPTION
WHEN BELOW_SALARY_RANGE THEN
dbms_output.put_line('Employee ' || n_emp_id ||
' has salary below the salary range');
WHEN ABOVE_SALARY_RANGE THEN
dbms_output.put_line('Employee ' || n_emp_id ||
' has salary above the salary range');
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('Employee ' || n_emp_id || ' not found');
END;
/
Dalam tutorial ini, kamu telah belajar bagaimana mendefinisikan pengecualian PL / SQL kamu sendiri, meningkatkan dan menanganinya di bagian pengendali pengecualian dari blok PL / SQL.
Sumber : http://www.plsqltutorial.com/
0 comments:
Post a Comment