Compartilhar via


O2SS0054: Não é possível converter EXCEPTION_INIT (erro)

Este artigo aborda o motivo pelo qual o Assistente de Migração do SQL Server (SSMA) para Oracle não pode converter EXCEPTION_INITo .

Tela de fundo

Tratamento de exceções é uma construção de linguagem de programação ou mecanismo projetado para lidar com a ocorrência de exceções, condições especiais que alteram o fluxo normal de execução do programa. Você pode usar o para associar nomes de PRAGMA EXCEPTION_INIT exceção a outros códigos de erro Oracle que você pode antecipar.

Sempre que você tenta converter código PL/SQL com uma EXCEPTION_INIT cláusula com um nome de exceção definido pelo usuário, o SSMA não consegue converter EXCEPTION_INIT porque não encontra uma exceção com o mesmo nome na seção de parâmetros.

Exemplo

Considere o seguinte exemplo:

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

Observação

Este é um exemplo de código incorreto do Oracle, pois o Oracle também gera uma mensagem de erro quando você tenta executar esse código.

Quando você tenta converter o código anterior no SSMA, ele não identifica a exceção MYEXCEPTION_1 definida pelo usuário e, portanto, gera a seguinte mensagem de erro:

O2SS0054: Não é possível converter EXCEPTION_INIT

Possíveis soluções

A correção desse erro é usar o mesmo nome ao declarar e definir uma exceção. Atualize o código da seguinte maneira:

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