Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo aborda o motivo pelo qual o Assistente de Migração do SQL Server (SSMA) para Oracle não pode converter EXCEPTION_INIT
o .
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;