Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Deklarasikan Pengecualian Buat Pengguna Menggunakan Metode RAISE_APPLICATION_ERROR Di Database Oracle

Seperti yang dibahas dalam pengantar penanganan pengecualian PL/SQL, ada tiga cara untuk mendeklarasikan pengecualian yang ditentukan pengguna di Oracle PL/SQL. Diantara ketiganya sudah kita bahas dan pelajari cara pertama pada tutorial sebelumnya. Hari ini di blog ini kita akan mengambil langkah maju dan melihat cara kedua mendeklarasikan pengecualian yang ditentukan pengguna dan mempelajari cara mendeklarasikan pengecualian yang ditentukan pengguna menggunakan metode RAISE_APPLICATION_ERROR.

Apa itu metode RAISE_APPLICATION_ERROR?

RAISE APPLICATION ERROR adalah prosedur tersimpan yang disertakan dengan perangkat lunak Oracle. Dengan menggunakan prosedur ini, Anda dapat mengaitkan nomor kesalahan dengan pesan kesalahan khusus. Menggabungkan nomor kesalahan serta pesan kesalahan khusus, Anda dapat membuat string kesalahan yang terlihat mirip dengan string kesalahan default yang ditampilkan oleh mesin Oracle saat terjadi kesalahan.

Berapa banyak kesalahan yang dapat kita hasilkan menggunakan prosedur RAISE_APPLICATION_ERROR?

Prosedur RAISE_APPLICATION_ERROR memungkinkan kita untuk memberi nomor kesalahan kita dari -20.000 hingga -20.999 sehingga kita dapat mengatakan bahwa menggunakan prosedur RAISE_APPLICATION_ERROR kita dapat menghasilkan 1000 kesalahan.

Raise_application_error merupakan bagian dari paket yang mana?

Anda dapat menemukan prosedur RAISE_APPLICATION_ERROR di dalam paket DBMS_STANDARD.

Sintaks Raise_Application_Error

raise_application_error (error_number, message [, {TRUE | FALSE}]);

Di sini error_number adalah bilangan bulat negatif dalam kisaran -20000.. -20999 dan pesannya adalah string karakter hingga 2048 byte. Jika parameter ketiga opsional adalah TRUE, kesalahan ditempatkan pada tumpukan semua kesalahan sebelumnya. Namun dalam kasus parameter FALSE (default), error menggantikan semua error sebelumnya. RAISE_APPLICATION_ERROR adalah bagian dari paket DBMS_STANDARD, dan Anda tidak perlu memenuhi syarat referensi ke paket STANDARD. 

Contoh prosedur RAISE_APPLICATION_ERROR

Dalam contoh berikut kita akan mengambil input tipe data numerik dari pengguna dan memeriksa apakah itu 18 atau lebih. Jika tidak maka kesalahan yang ditentukan pengguna, yang akan kami nyatakan, akan dimunculkan jika tidak, akan ada aliran normal eksekusi program.

Langkah1:Setel keluaran server pada

Jika kita ingin melihat hasil yang dikembalikan oleh program PL/SQL pada layar output default, maka kita harus mengatur output server 'on' yang secara default disetel ke 'off' untuk sesi tersebut.

SET SERVEROUTPUT ON;

Langkah 2:Ambil Masukan Pengguna

Meskipun kita dapat memasang nilai-nilai dalam kode kita seperti yang kita lakukan di tutorial terakhir tetapi itu tidak menyenangkan. Untuk membuat kode lebih dinamis, saya memutuskan untuk menerima masukan oleh pengguna kali ini dengan membiarkan mereka memasukkan nilai ke dalam kotak pop-up dengan pesan khusus yang tercetak di atasnya.

Kita dapat mengambil input menggunakan kotak pop-up dengan pesan khusus yang tercetak di atasnya menggunakan perintah ACCEPT di Oracle PL/SQL.

ACCEPT var_age NUMBER PROMPT 'What is your age?';

Perintah dimulai dengan kata kunci accept diikuti dengan nama variabel dan tipe datanya. Dalam kasus kami, namanya adalah var_age dan tipe datanya adalah NUMBER. Itu adalah bagian pertama dari pernyataan itu. Bagian ini akan membantu kita dalam menyimpan nilai input. Separuh pernyataan lainnya akan bertanggung jawab untuk mencetak pesan yang disesuaikan pada kotak pop-up. Menggunakan kata kunci PROMPT yang tepat setelah tipe data variabel, Anda dapat menentukan string yang diinginkan yang ingin Anda cetak pada kotak pop-up Anda. Dalam kasus kami, pesan yang disesuaikan ini adalah 'Berapa usia Anda?'

Jika Anda ingin saya melakukan tutorial ekstensif yang menjelaskan perintah ACCEPT secara detail, maka bagikan blog ini menggunakan tagar #RebellionRider. Anda juga dapat menulis kepada saya di twitter saya @RebellionRider.

Langkah 3:Deklarasikan Variabel

DECLARE
  age   NUMBER := &var_age;

Karena batasan ruang lingkup, kami tidak dapat menggunakan nilai yang disimpan ke dalam variabel yang kami gunakan dalam perintah accept. Ini berarti kita tidak dapat langsung menggunakan nilai tersebut ke dalam program PL/SQL kita. Kita dapat memecahkan masalah ini dengan menetapkan nilai yang disimpan ke dalam variabel var_age ke variabel yang lokal ke blok PL/SQL. Itulah tepatnya yang kami lakukan di segmen kode di atas.

Pada segmen kode di atas kita mendeklarasikan variabel lokal dengan nama 'age' dan menetapkan nilai yang disimpan ke dalam variabel var_age menggunakan operator penugasan.

Langkah 4:Deklarasikan pengecualian yang ditentukan pengguna dengan menggunakan prosedur RAISE_APPLICATION_ERROR

BEGIN
  IF age < 18 THEN
   RAISE_APPLICATION_ERROR (-20008, 'you should be 18 or above for the DRINK!');
  END IF;

Di sini, di segmen kode ini, kami mendeklarasikan pengecualian yang ditentukan pengguna menggunakan prosedur RAISE_APPLICATION_ERROR. Prosedur ini disebut menggunakan dua parameter. Di mana parameter pertama adalah angka negatif yang, dalam kasus saya, adalah -20008 dan angka kedua adalah string yang ditampilkan jika kesalahan yang sama terjadi.

Sekarang pertanyaannya adalah kapan kesalahan ini akan terjadi?

Seperti yang Anda lihat bahwa kode tersebut diapit di dalam blok kontrol bersyarat IF-THEN yang memastikan bahwa kesalahan hanya akan muncul jika usia pengguna kurang dari 18 tahun.

Langkah 5:Pernyataan yang dapat dieksekusi

DBMS_OUTPUT.PUT_LINE('Sure, What would you like to have?');

Pernyataan yang dapat dieksekusi adalah pernyataan yang dikompilasi dan dijalankan ketika tidak ada kesalahan dan program memiliki aliran eksekusi yang normal. Untuk membuat kode menjadi sederhana dan mudah dipahami, saya hanya menulis satu pernyataan yang merupakan pernyataan OUTPUT DBMS.

Langkah 6:Tulis pengendali Pengecualian

Sekarang setelah kita mendeklarasikan serta memunculkan pengecualian yang ditentukan pengguna, selanjutnya kita perlu menulis penangan pengecualian untuk itu. Seperti yang dikatakan dalam tutorial PL/SQL sebelumnya bahwa di bagian Exception Handler kami menentukan apa yang akan terjadi ketika kesalahan yang Anda timbulkan akan dipicu.

EXCEPTION WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE(SQLERRM);
END;
/

Di bagian penanganan pengecualian ini saya telah memanggil fungsi SQLERRM menggunakan pernyataan DBMS OUTPUT. Ini adalah fungsi utilitas yang disediakan oleh Oracle yang mengambil pesan kesalahan untuk pengecualian yang terakhir terjadi.

Mari kita kompilasi semua potongan kecil kode ini menjadi satu program besar.

Pengecualian Buatan Pengguna Menggunakan Prosedur Raise_Application_Error

SET SERVEROUTPUT ON;
ACCEPT var_age NUMBER PROMPT 'What is yor age';
DECLARE
  age   NUMBER := &var_age;
BEGIN
  IF age < 18 THEN
    RAISE_APPLICATION_ERROR (-20008, 'you should be 18 or above for the DRINK!');
  END IF; 
  DBMS_OUTPUT.PUT_LINE ('Sure, What would you like to have?'); 
  EXCEPTION WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE (SQLERRM);
END;
/ 

Ini adalah tutorial singkat namun deskriptif tentang cara mendeklarasikan pengecualian yang ditentukan pengguna menggunakan prosedur Raise_Application_Error di Oracle Database. Semoga Anda belajar sesuatu yang baru dan senang membaca. Anda dapat membantu orang lain dalam belajar serta membantu saya dan saluran saya dalam berkembang dengan membagikan blog ini di Media Sosial Anda. Terima kasih &semoga harimu menyenangkan!


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tabel audit Pemicu Oracle Dasar

  2. Apakah ada fungsi untuk membagi string di PL/SQL?

  3. Pilih Baris Ke-N Dari Tabel Di Oracle

  4. ORA-01008:tidak semua variabel terikat. Mereka terikat

  5. dbms_lob.getlength() vs. length() untuk menemukan ukuran gumpalan di Oracle