Anonim

Os especialistas em banco de dados reconhecerão o nome Oracle como uma potência no mundo do sistema de gerenciamento de banco de dados relacional (DBMS). A Oracle produz soluções de DBMS de alta potência há décadas e continua a ser líder no campo. Muitos usuários finais de produtos de banco de dados podem ficar confusos ou confusos quando estão usando uma solução predefinida e isso gera uma mensagem de erro. Uma mensagem de erro comum produzida pela Oracle é o erro ORA-06512.

Consulte também o nosso artigo Como corrigir o erro ora-00942

O Oracle é um sistema de gerenciamento de banco de dados que existe há quarenta anos de várias formas. Ele originalmente usava algo chamado esquema SCOTT, com o nome de um dos funcionários originais da Oracle. Você até fez login no Oracle pela primeira vez com o nome de usuário 'scott' e a senha 'tigre', que leva o nome do gato de Scott. Agora, existem vários esquemas usados, dependendo do uso do Oracle.

Se você deseja aprender mais sobre o Oracle desde o início, esta página é muito útil.

Corrigindo erros do ORA-06512

No Oracle, um erro ORA-06512 é um erro de exceção geral que informa onde algo está errado. É um dos erros menos específicos produzidos pela Oracle, pois informa apenas que há um problema, mas não o que está errado.

Por exemplo, uma mensagem de erro típica pode ser:

“ORA-01422: a busca exata retorna mais do que o número solicitado de linhas

ORA-06512: na "DATABASE_NAME", linha 66

ORA-06512: na linha 1 ″

A primeira linha informa a você que tipo de erro está acontecendo; nesse caso, a consulta está retornando mais dados do que o esperado, para que não saiba como lidar com isso. O código 'ORA-01422' é o código de erro real que você precisa observar. O ORA-06512 é apenas o código de erro geral.

A segunda linha informa onde o erro está ocorrendo. O DATABASE_NAME será o banco de dados em que você estiver trabalhando no momento. Linha 66 é a linha em que o erro está ocorrendo e é a linha que você precisa verificar para corrigir o erro.

A terceira linha na sintaxe do erro informa a origem da chamada. Marque a linha um e você verá uma chamada para o DATABASE_NAME.

Para corrigir esse erro específico, é necessário corrigir o problema causado pelo ORA-01422, que é 'busca exata retorna mais do que o número solicitado de linhas' ou você precisa adicionar um manipulador de exceções para solicitar ao Oracle que o ignore. Como sempre é preferível corrigir o problema principal, este é o caminho a percorrer.

Há duas coisas que você pode fazer. Se você espera que a consulta retorne mais de uma única linha, é possível modificá-la para que não seja surpreendida. Se você espera apenas que a consulta retorne uma única linha, também pode modificá-la.

Esperando mais de uma única linha:

para X in (selecione * de t onde…)

ciclo

- processe o registro X aqui

loop final;

Isso deve erradicar o erro nas consultas ao banco de dados em que mais de uma linha seria retornada.

Se você espera apenas que uma única linha seja retornada, tente:

início

selecione * em….

de t onde …

processo….

exceção

quando NO_DATA_FOUND então

código de tratamento de erros quando nenhum registro é encontrado

quando TOO_MANY_ROWS então

código de tratamento de erros quando muitos registros são encontrados

fim;

Esse segundo método deve entregar apenas a linha única sem exibir o erro 'ORA-01422: busca exata retorna mais do que o número solicitado de linhas' e, portanto, o erro original ORA-06512.

Você também pode ajustar a consulta para que ela retorne apenas a primeira linha de uma resposta de várias linhas. Isso pode funcionar se você não tiver controle completo sobre o banco de dados ou não quiser mexer muito com as coisas, mas ainda precisar de uma resposta.

declarar

cursor c1 para selecionar * de t onde…

início

c1 aberto;

buscar c1 em ..

se (c1% não encontrado) então

tratamento de erros para nenhum registro encontrado

fim se;

fechar c1;

fim;

(Se você conhece SQL, pode ficar um pouco confuso com essas linhas de comando … O Oracle não usa o Transact-SQL, mas sua própria extensão de linguagem procedural do SQL, PL / SQL. Embora semelhante ao Transact-SQL, o PL / SQL faz muitas coisas inteligentes e é uma ferramenta muito poderosa por si só. Você pode achar útil esta FAQ do PL / SQL ao tentar aprender sobre o Oracle.)

Portanto, a lição básica aqui é que um erro ORA-06512, por si só, não é algo que você pode corrigir diretamente. Em vez disso, você precisa descobrir qual é o erro real, o que os outros códigos de erro informarão e, em seguida, resolver esses erros um por um.

Você tem dicas ou truques sobre o Oracle para compartilhar? Deixe-nos saber sobre eles nos comentários!

Como corrigir erros ora-06512 no oracle db