Pergunta

Eu tenho duas instruções select unidas por "união". Durante a execução de que a declaração que eu tenho:

relatório de erro: Erro SQL: ORA-01790: A expressão deve ter mesmo tipo de dados como expressão correspondente 01790. 00000 - "expressão deve ter mesmo tipo de dados como expressão correspondente"

Talvez você pode me dar um conselho sobre como diagnosticar este problema?

Foi útil?

Solução 7

Como eu mencionei na pergunta que eu gostaria de ter sugestões de como resolver o meu problema. O que eu tenho feito é habilitado uma coluna de cada vez em cada instrução SELECT e descobri que eu tinha incompatibilidade no último coluna do meu UNIÃO SQL. Muito obrigado por participar e me ajudar, mas eu sabia que tinha de incompatibilidade de tipo, o que eu não sabia é como solucionar problemas.

Outras dicas

Sem olhar para o seu SQL, eu acho que você tem colunas sendo UNION'ed que têm diferentes tipos de dados.

Aqui está o que encontrei:

ORA-01790: expressão deve ter mesmo tipo de dados como expressão correspondente

Causa:. Um item de lista selecionado corresponde a um item de lista SELECT com um tipo de dados diferente em outra consulta da mesma expressão set

ação: Verifique se todos os itens de lista de seleção correspondentes têm os mesmos tipos de dados. Use o TO_NUMBER, TO_CHAR e funções TO_DATE para fazer conversões de dados explícitos.

Eu não vi a sua consulta, mas eu estou supondo que uma escolha em sua união não está selecionando as mesmas colunas como a outra.

O erro está lhe dizendo que você está colunas-ing união com diferentes tipos de dados. Existem funções Oracle que irá converter um tipo para outro (por exemplo, "to_char"), você tem que converter os tipos de dados em um formato comum, ou pelo menos um para o outro. Se você postar a consulta / tipos reais que seria possível ser mais specifc.

É evidente que o problema para o cartaz foi resolvido mais de meia década atrás, no entanto, eu queria salientar que quem lê este post em busca de ajuda que a ordem das propriedades selecionadas (colunas) deve corresponder de uma declaração unioned ao Próximo. Não é suficiente simplesmente ter os nomes e os tipos de dados correspondem, no entanto, que é, em certo sentido a causa raiz. Mas devido à forma como as declarações da União são tratadas no Oracle, é possível obter o erro ORA-01790 devido a uma incompatibilidade na ordenação das colunas só.

No meu caso, eu tinha uma consulta com um UNION ALL de dois seleciona. Um selecione tinha uma coluna chamada "generic_column_name" como o item 25 na seleção, eo outro selecione tinha a mesma coluna chamada "generic_column_name" do mesmo tipo de dados (eu testei várias maneiras através de codificação de disco e também usando conversões tipo de dados forçados ). No entanto, o segundo SELECT tinha esse item no 19º lugar, então todas as colunas a partir daí foram compensados ??e isso desencadeou o erro ORA-01790.

Você precisa ter certeza de que as colunas correspondentes na sua união têm o mesmo tipo de dados. A maneira mais fácil seria a comentar colunas, um por um para diminuir para a coluna e, em seguida, usar a função de conversão de tipo explícita em um deles para fazer os tipos de correspondência.

Você tentou executar uma instrução SELECT (provavelmente um sindicato ou um toda a União), e todas as consultas não continha correspondência tipos de dados nas colunas de resultados.

Techonthenet - ORA-01790

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top