O2SS0054: Impossibile convertire EXCEPTION_INIT (errore)

Questo articolo illustra il motivo per cui SQL Server Migration Assistant (SSMA) per Oracle non può convertire EXCEPTION_INIT .

Sfondo

La gestione delle eccezioni è un costrutto del linguaggio di programmazione o un meccanismo progettato per gestire l'occorrenza di eccezioni, condizioni speciali che modificano il normale flusso di esecuzione del programma. È possibile usare per PRAGMA EXCEPTION_INIT associare i nomi delle eccezioni ad altri codici di errore Oracle che è possibile prevedere.

Ogni volta che si tenta di convertire codice PL/SQL che contiene una clausola con un nome di eccezione definito dall'utente, SSMA non è in grado di eseguire la conversione perché non trova un'eccezione con lo stesso nome nella sezione EXCEPTION_INIT EXCEPTION_INIT del parametro.

Esempio

Si consideri l'esempio seguente:

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

Nota

Si tratta di un esempio di codice non valido di Oracle, in quanto Oracle genera anche un messaggio di errore quando si tenta di eseguire questo codice.

Quando si tenta di convertire il codice precedente in SSMA, non identifica l'eccezione definita dall'utente e quindi MYEXCEPTION_1 genera il messaggio di errore seguente:

O2SS0054: Impossibile convertire EXCEPTION_INIT

Possibili soluzioni

La correzione di questo errore è l'uso dello stesso nome durante la dichiarazione e la definizione di un'eccezione. A tale scopo, aggiornare il codice come segue:

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