domingo, 14 de julio de 2013

Error ORA-01722, error al convertir cadena a número.

En Oracle cuando se presenta el error ORA-01722 "invalid number" generalmente se debe a que se está intentando convertir una cadena alfanumérica a números; pero hay ocasiones en que la cadena a convertir es un número válido que tiene cifras decimales por lo que el error lo produce el símbolo de separación.
Con las cadenas '12.34' y '56,78' vamos a ver que dependiendo de la variable de entorno NLS_LANG se puede presentar el error al tratar de convertir la primera o la segunda cadena.

Primero vamos a probar con el idioma LATIN AMERICA SPANISH, para esto debemos modificar la variable de entorno NLS_LANG como se indica en el anterior post Cambiar idioma del IDE de Forms 6i de Oracle.



Ahora realizamos las consultas respectivas y podemos observar que el error se presenta cuando se usa punto (.) como símbolo separador de cifras decimales.



Luego cambiamos el idioma por AMERICAN y volvemos a conectarnos a la base de datos para que tome el cambio.



En este caso podemos ver que el error se produjo cuando la coma (,) es el separador de cifras decimales.



Finalmente hay que tener en cuenta que la configuración del idioma sólo afecta el equipo del usuario cliente de la base de datos mas no el servidor, por lo tanto es común que este error se presente para algunos usuarios y para otros no.

Espero que le haya sido de ayuda lo visto anteriormente.

No hay comentarios:

Publicar un comentario

Conectar PHP con una base de datos Oracle

En esta entrada se muestra cómo acceder a una base de datos Oracle desde PHP usando el modulo OCI8. Para la realización de los ejemplos se u...