Adakah Raise_application_error rollback?
Adakah Raise_application_error rollback?

Video: Adakah Raise_application_error rollback?

Video: Adakah Raise_application_error rollback?
Video: What makes a GOOD database trigger? 2024, Mungkin
Anonim

Di dalam pencetus a RAISE_APPLICATION_ERROR tidak tidak melaksanakan a KEMBALIKAN , ia membatalkan operasi semasa, iaitu satu UPDATE/INSERT/DELETE. A Kembalikan mengembalikan semua perubahan dalam transaksi semasa (atau sehingga Savepoint yang diberikan), itu berbeza.

Dengan cara ini, apakah itu Raise_application_error?

Menjawab raise_application_error sebenarnya adalah prosedur yang ditakrifkan oleh Oracle yang membolehkan pembangun menimbulkan pengecualian dan mengaitkan nombor ralat dan mesej dengan prosedur. Oracle menyediakan raise_application_error prosedur untuk membolehkan anda menaikkan nombor ralat tersuai dalam aplikasi anda.

Tambahan pula, apakah yang akan berlaku apabila pernyataan rollback dilaksanakan di dalam pencetus? Apabila pencetus memadamkan transaksi semasa masih belum lengkap. Memandangkan COMMIT menamatkan transaksi yang membenarkan mereka dalam pencetus akan memecahkan unit kerja. Jadi berubah dilaksanakan dalam pencetus dilakukan (atau ditarik balik) oleh transaksi pemilikan yang mengeluarkan DML yang melepaskan pencetus.

Daripada itu, apakah perbezaan antara Pragma Exception_init dan Raise_application_error?

pragma exception init menukar Ralat Oracle menjadi pengecualian bernama. Jika operasi pangkalan data menimbulkan "sumber sibuk" ORA-00054, anda perlu kod:. Naikkan_ralat_permohonan digunakan untuk MENINGKATKAN ralat - exception_init digunakan untuk menangani ralat (saya rasa anda boleh mengatakan ia bertentangan didalam cara).

Apakah Sqlerrm?

SQLERRM Fungsi. Fungsinya SQLERRM mengembalikan mesej ralat yang dikaitkan dengan hujah nombor ralatnya. Jika hujah ditinggalkan, ia mengembalikan mesej ralat yang dikaitkan dengan nilai semasa SQLCODE. SQLERRM tanpa hujah hanya berguna dalam pengendali pengecualian.

Disyorkan: