O2SS0054: Tidak dapat mengonversi EXCEPTION_INIT (Kesalahan)

Artikel ini membahas alasan mengapa Asisten Migrasi SQL Server (SSMA) untuk Oracle tidak dapat mengonversi EXCEPTION_INIT.

Latar belakang

Penanganan pengecualian adalah konstruksi atau mekanisme bahasa pemrograman yang dirancang untuk menangani terjadinya pengecualian, kondisi khusus yang mengubah alur normal eksekusi program. Seseorang dapat menggunakan PRAGMA EXCEPTION_INIT untuk mengaitkan nama pengecualian dengan kode kesalahan Oracle lain yang dapat diantisipasi seseorang.

Setiap kali Anda mencoba mengonversi kode PL/SQL yang memiliki EXCEPTION_INIT klausul dengan nama pengecualian yang ditentukan pengguna di dalamnya, SSMA tidak dapat dikonversi EXCEPTION_INIT karena tidak menemukan pengecualian dengan nama yang sama di bagian parameter.

Contoh

Pertimbangkan contoh berikut:

DECLARE
    MYEXCEPTION EXCEPTION;
    PRAGMA EXCEPTION_INIT(MYEXCEPTION_1, -20000);
BEGIN
    NULL;
END;

Catatan

Ini adalah contoh kode buruk Oracle, karena Oracle juga menghasilkan pesan kesalahan ketika Anda mencoba menjalankan kode ini.

Ketika Anda mencoba mengonversi kode di atas dalam SSMA, kode tersebut tidak mengidentifikasi pengecualian MYEXCEPTION_1 yang ditentukan pengguna dan karenanya menghasilkan pesan kesalahan berikut:

O2SS0054: Tidak dapat mengonversi EXCEPTION_INIT

Kemungkinan solusi

Remediasi kesalahan ini adalah menggunakan nama yang sama saat mendeklarasikan dan mendefinisikan pengecualian. Untuk ini, perbarui kode sebagai berikut:

DECLARE
    MYEXCEPTION EXCEPTION;
    PRAGMA EXCEPTION_INIT(MYEXCEPTION, -20000);
BEGIN
    NULL;
END;