Saya ingin menggunakan rutin ASSERT yang secara fungsional mirip dengan yang ditemukan dalam bahasa lain, yaitu konstruk (baik itu prosedur, sintaksis ...)
ASSERT( <condition>, <msg>)
sedemikian sehingga ketika <condition>
dikirimkan dalam argumen pertama adalah salah pengecualian akan dimunculkan dengan <msg>
pesan deskriptif yang ditentukan .
Saya tahu ini sepele untuk dilakukan dengan tangan tetapi saya bertanya apakah ada standar yang disediakan dengan DBMS.
Harus menulis sendiri atau mengimpor satu dari paket pihak ketiga akan tidak praktis, karena saya akan membutuhkannya sepenuhnya portabel dan transparan untuk setiap proyek yang saya kerjakan.
oracle
error-handling
pengguna881430
sumber
sumber
Jawaban:
Tidak ada prosedur pernyataan bawaan dalam SQL atau PL / SQL, jadi Anda harus menulis sendiri.
Ada dua cara untuk melakukan ini. Anda dapat mengajukan pengecualian secara manual, seperti yang dibahas dalam artikel Oracle ini , atau Anda dapat menulis pembungkus untuk
raise_application_error
prosedur ini, yang didokumentasikan di bagian penanganan pengecualian Oracle pada dokumentasi.Saya akan menambahkan bahwa pengecualian dirancang untuk skenario semacam ini, jadi Anda sebaiknya melepas topi programmer sebentar & menggunakan topi DBA Anda :)
sumber
Dibangun di DBMS_ASSERT paket adalah versi sempit scoped dari apa yang Anda cari. Untuk menegaskan Phil lain benar, Anda harus membangun sendiri. Berikut ini adalah demonstrasi sederhana dari opsi kedua dalam jawaban Phil +1 :
sumber