Pregunta

Tengo dos sentencias de selección unidas por "unión". Durante la ejecución de esa declaración Tengo:

Informe de error: SQL error: ORA-01790: la expresión debe tener el mismo tipo de datos como la expresión correspondiente 01790. 00000 - "expresión debe tener el mismo tipo de datos como expresión correspondiente"

Tal vez usted me puede dar un consejo sobre cómo diagnosticar este problema?

¿Fue útil?

Solución 7

Como se menciono en la pregunta que me gustaría tener sugerencias sobre cómo solucionar mi problema. Lo que he hecho se habilita una columna a la vez en cada instrucción de selección y se encontró que tenía falta de coincidencia en el último de mi columna de SQL UNION. Muchas gracias por participar y ayudar a mí, pero yo sabía que tenía coincidencia de tipos, lo que yo no sé es cómo solucionar los problemas.

Otros consejos

Sin mirar a su SQL, yo supongo que tiene columnas que se UNION'ed que tienen diferentes tipos de datos.

Esto es lo que encontraron:

ORA-01790: expresión debe tener el mismo tipo de datos como expresión correspondiente

Causa:. un elemento de lista SELECT corresponde a un elemento de lista SELECT con un tipo de datos diferente en otra consulta de la misma expresión conjunto

Acción: Comprobar que todos los elementos de la lista SELECT correspondientes tienen los mismos tipos de datos. Utilice los TO_NUMBER, TO_CHAR y funciones TO_DATE hacer conversiones de datos explícitos.

No he visto la consulta, pero estoy adivinando que uno seleccione en su unión no es la selección de las mismas columnas como el otro.

El error le está diciendo que eres columnas unión-ción con diferentes tipos de datos. Hay funciones de Oracle que convertirán un tipo a otro (por ejemplo, "to_char"), usted tiene que convertir los tipos de datos en un formato común, o por lo menos uno en el otro. En caso de publicar los tipos de consulta / reales que sería posible ser más specifc.

Es evidente que el problema para el cartel se resolvió más de la mitad de hace una década, sin embargo, yo quería señalar a cualquiera que lea este blog en busca de ayuda que el orden de las propiedades seleccionadas (columnas) debe coincidir de una declaración resultante de la unión a la próximo. No es suficiente tener simplemente los nombres y los tipos de datos coinciden, sin embargo, que es en cierto sentido la causa raíz. Sin embargo, debido a la forma en que los estados de la Unión se manejan de Oracle, es posible obtener el error ORA-01790, debido a una falta de coincidencia en el orden de las columnas solamente.

En mi caso, tuve una consulta con un UNION ALL de dos selecciones. Un selecto tenía una columna denominada "generic_column_name" como el elemento número 25 en la selección, y el otro selecto tenido esa misma columna nombrada "generic_column_name" del mismo tipo de datos (I probado varias maneras a través de la codificación dura y también utilizando las conversiones de tipos de datos forzadas ). Sin embargo la segunda seleccione tenían este tema en el puesto 19, por lo que todas las columnas A partir de ahí fueron compensadas y esto provocó el error ORA-01790.

Es necesario asegurarse de que las columnas correspondientes en su sindicato tienen el mismo tipo de datos. La forma más fácil sería hacer comentarios columnas una por una para reducir a la columna y luego utilizar la función de conversión de tipo explícita en uno de ellos para hacer partido de tipos.

Ha intentado ejecutar una instrucción SELECT (probablemente una unión o una UNION ALL), y todas las consultas no contenía tipos de datos coincidentes en las columnas de resultados.

Techonthenet - ORA-01790

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top