miércoles, 9 de junio de 2010

Error ORA-00997 en una consulta con Oracle

Buenas noches estimados, hoy les comentaré un error con el que me topé durante el desarrollo de una sencilla aplicación en Java que se conectaba a una BD en Oracle y en la que hacía una consulta a una tabla con un campo de tipo LONG (OJO! LONG como tipo de Oracle, que es una versión muy grande del tipo de dato VARCHAR2, y que ha entrado en desuso en favor del tipo de dato BLOB).
Tras ejecutar la consulta en cuestión, el manejador me devolvía el siguiente error:
ORA-00997: Illegal use of LONG datatype
Un poco desconcertante al principio, pero investigando un poco pude encontrar la solución al mismo, resulta que este tipo de dato no se puede incluir en consultas que contengan DISTINCT ó cláusulas WHERE de tipo CONNECT BY, GROUP BY u ORDER BY; sólo debe ser utilizado en consultas sencillas de tipo SELECT. Y mi consulta tenía un DISTINCT.
Luego de intentar muchas veces convertirlo en otro tipo de datos, me di por vencido, y tuve que hacer una consulta sólo para el campo con el tipo de datos LONG.
Espero que esto le sirva a alguno, como me sirvió a mí.
Saludos...

Fuentes: ora-code, ss64.

No hay comentarios: