ORA-12704: No se puede convertir datos de caracteres
-
01-10-2019 - |
Pregunta
Estoy tratando de realizar operaciones SET en Oracle a través de bases de datos remotas. Estoy utilizando el operador menos.
Mi consulta es como la siguiente.
SELECT NAME FROM localdb MINUS SELECT NAME from remotedb@dblink
Esto es tirar un error ORA-12704. Entiendo que esto garantiza algún tipo de conversión o un entorno NLS.
¿Qué debo probar la próxima?
Solución
Las dos columnas name
se almacenan en diferentes conjuntos de caracteres. Esto podría ser debido a sus definiciones de tipo, o podría ser debido a que las dos bases de datos están utilizando diferentes conjuntos de caracteres.
podría ser capaz de evitar esto mediante la conversión de forma explícita el campo de la base de datos remota al juego de caracteres de la local. Prueba esto:
SELECT NAME FROM localdb MINUS SELECT TO_CHAR(NAME) from remotedb@dblink
Otros consejos
Se cose los tipos de columna de nombre en esos 2 mesas son diferentes.
Asegúrese de que la columna NAME de la tabla remotedb es exactamente el mismo tipo como el nombre en la tabla LocalDB. Es obligatorio cuando se utiliza un operador menos.