CORREGIR ERROR ORA-1722:INVALID NUMBER EN UN FORMULARIO DE CAPTURA DE UNA APLICACIÓN HECHA EN APEX

Cuando se presenta el error ORA-1722:invalid number en un formulario de captura de datos, generalmente significa (o por lo menos a mí me pasó) que el valor que se está recogiendo en el campo numérico no cumple con la estructura que se necesita (decimales separados por comas).

Esto supone un problema ya que depende en muchas ocasiones de la configuración regional que tenga el equipo desde donde se está accediendo a la aplicación y no es muy conveniente poner al usuario a que busque en su teclado, la coma (,) para indicar decimales.

Me explico mejor, tengo este formulario:



El error que me sale cuando intento agregar 15.25 (separado por punto):



Como no puedo saber que configuración tiene cada usuario, intenté cambiar (sin éxito) la configuración de la sesión con respecto a los decimales ALTER SESSION 
SET NLS_NUMERIC_CHARACTERS = '.,';  y como lo complicado es enemigo de lo bueno, simplemente se me ocurrió hacer la corrección antes de insertar el dato ya que contaba con una acción dinámica que hacía el insert y la modifiqué añadiendole un 'replace' antes de hacerlo:



Lo que hice fue reemplazar el punto por la coma antes del insert, así para el usuario será transparente si usa uno u otro para separar los decimales,en cualquier caso el dato va a servir.

A continuación la sentencia:


begin
insert into tb_registro (registro_meta,registro_real,
indicador_id,semana_id,mes_id,registro_comentario) values
(replace(:P6_META,'.',','),replace(:P6_REAL,'.',','),:P6_INDICADOR,:P6_SEMANA,:P6_MES,:P6_COMENTARIO);
end;

Espero les sea de utilidad.

Éxitos !

Comentarios

Entradas populares