Video: 3 Best way to fix just in time debugging problem 100% working 2025
Saat mencoba menentukan sumber kesalahan SQL dan SQLSTATE menunjukkan kondisi pengecualian dengan memegang nilai selain 00000, 00001, atau 00002, Anda mungkin ingin menangani situasi ini dalam satu dari cara berikut:
-
Kembali kontrol ke prosedur orang tua yang disebut subprosedur yang mengangkat pengecualian.
-
Gunakan klausa WHENEVER untuk cabang ke rutinitas penanganan pengecualian atau lakukan beberapa tindakan lainnya.
-
Tangani pengecualian di tempat dengan pernyataan compound SQL. Pernyataan majemuk SQL terdiri dari satu atau lebih pernyataan SQL sederhana, terjepit di antara kata kunci BEGIN dan END.
Berikut ini adalah contoh perintah pengecualian gabungan gabungan:
BEGIN DECLARE ValueOutOfRange EXCEPTION FOR SQLSTATE'73003 '; REPLACE INTO MAKANAN (Kalori) NILAI (: cal); Nilai SIGNALOutOfRange; MESSAGE 'Proseskan nilai kalori baru. 'EXCEPTION WHEN ValueOutOfRange THEN PESSAGE' Menangani berbagai kesalahan kalori '; KETIKA LAIN KEMUDIAN RESIGNAL; END
Dengan satu atau beberapa pernyataan DECLARE, Anda dapat memberi nama pada nilai SQLSTATE spesifik yang mungkin Anda duga. Pernyataan INSERT adalah salah satu yang mungkin menyebabkan pengecualian terjadi. Jika nilai: cal melebihi nilai maksimum untuk item data SMALLINT, SQLSTATE diatur ke "73003". Pernyataan SIGNAL menandakan kondisi pengecualian. Ini membersihkan area diagnostik teratas.
Ini menetapkan bidang RETURNED_SQLSTATE dari area diagnostik ke SQLSTATE untuk pengecualian bernama. Jika tidak terkecuali telah terjadi, rangkaian pernyataan yang diwakili oleh pernyataan 'Process a new kalori value' MESSAGE dijalankan. Namun, jika pengecualian telah terjadi, rangkaian pernyataan tersebut dilewati, dan pernyataan EXCEPTION dijalankan.
Jika pengecualian adalah pengecualian ValueOutOfRange, maka serangkaian pernyataan yang diwakili oleh pernyataan 'Penanganan kesalahan rentang daya' MESSAGE dijalankan. Pernyataan RESIGNAL dijalankan jika pengecualian bukan merupakan pengecualian ValueOutOfRange.
RESIGNAL hanya melewati kontrol eksekusi ke prosedur orang tua yang memanggil. Prosedur itu mungkin memiliki kode penanganan kesalahan tambahan untuk mengatasi pengecualian selain kesalahan nilai-out-of-range yang diharapkan.
