Saltar al contenido

¿Cómo resolver el error de Oracle ORA-01790?

Solución:

Sin mirar su SQL, supongo que tiene columnas UNION’ed que tienen diferentes tipos de datos.

Esto es lo que encontró:

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

Porque: Un elemento de la lista SELECT corresponde a un elemento de la lista SELECT con un tipo de datos diferente en otra consulta del mismo conjunto de expresión.

Acción: Compruebe que todos los elementos de la lista SELECT correspondientes tengan los mismos tipos de datos. Utilice las funciones TO_NUMBER, TO_CHAR y TO_DATE para realizar conversiones de datos explícitas.

No he visto su consulta, pero supongo que una selección en su unión no selecciona las mismas columnas que la otra.

Claramente, el problema del póster se resolvió hace más de media década, sin embargo, quería señalar a cualquiera que lea esta publicación en busca de ayuda que el orden de las propiedades seleccionadas (columnas) debe coincidir de una declaración unida a la siguiente. No es suficiente tener simplemente los nombres y los tipos de datos coincidentes, aunque esa es en cierto sentido la causa principal. Pero debido a la forma en que se manejan las declaraciones de Unión en Oracle, es posible obtener el error ORA-01790 debido a una discrepancia en el orden de las columnas solamente.

En mi caso, tuve una consulta con UNION ALL de dos selecciones. Una selección tenía una columna llamada “generic_column_name” como el elemento número 25 en la selección, y la otra selección tenía esa misma columna llamada “generic_column_name” del mismo tipo de datos (probé varias formas a través de la codificación rígida y también usando conversiones de tipos de datos forzados ). Sin embargo, la segunda selección tenía este elemento en el puesto 19, por lo que todas las columnas a partir de ahí se desplazaron y esto desencadenó el error ORA-01790.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *