Power Builder - ¿Como guardar decimales en Oracle?

 
Vista:

¿Como guardar decimales en Oracle?

Publicado por Manuel Ruiz (33 intervenciones) el 07/11/2002 13:28:44
Hola:
Necesito que me ayuden. Tengo un problema al guardar decimales en Oracle.
Miren tengo una tabla con 3 columnas, una de ellas es NUMBER(5,3).
Tengo un datawindow que deberia guardar datos en esa tabla
pero al hacer datawindow.Update() me sale el siguiente error: ORA-01722: invalid number
Me he dado cuenta que el problema es solo con los decimales.

Agradecería si me dijeran como debo hacer para guardar decimales, hay algún truco?
Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:¿Como guardar decimales en Oracle?

Publicado por milson cardona (613 intervenciones) el 07/11/2002 14:26:12
Un saludo especial desde COLOMBIA

bueno el problema puede estar generado por varias cosas

1- tienes una máscara en el campo del DW, que no coincide con la configuración de decimales de tu DB, es decir que si tu configuraste los decimales de tu DB como ","(separador miles) "."(punto decimal) y en la máscara tienes algo como ###.###,00 te sacará el error.

2- la configuración de tu cliente ORACLE no coincide con la configuración de tu DB, es decir que si tu DB fue instalada en ENGLISH("." ",") y tu cliente lo instalaste en SPANISH ("," ".") o cambiaste alguna configuración después, tampoco coincidirán las configuraciones de los separadores de miles y el separador de punto decimal y también te sacará el error... para detectar si es esto cierto debes ejecutar las siguientes consultas
//para ver la configuración de la DB
SELECT *
FROM nls_database_parameters;

//para ver la configuración de la session
SELECT *
FROM nls_session_parameters;

y verifica que el NLS_NUMERIC_CHARACTERS tengan la misma configuración en ambas consultas, sino acabas de descubrir el problema..

escribe aquí mismo si alguno de estos errores es el que tienes y con mucho gusto te daré la solución.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:¿Como guardar decimales en Oracle?

Publicado por milson cardona (613 intervenciones) el 07/11/2002 14:34:24
Un saludo especial desde COLOMBIA

otro posible error que se me olvidaba comentarte es

3- reviza la configuración regional de tu equipo, reviza que tenga el mismo separador de miles y el mismo separador de decimales que los de tu DB(ya sabes como consultar la config de tu DB), esto también es muy frecuente que pase, la configuracion regional la puedes consultar por el panel de control, configuracion regional y click en la pestaña de NUMEROS...

aproposito, tu hiciste esta misma pregunta en diás anteriores? y yo te respondí acaso no fui de mucha ayuda?.... bueno si estoy equivocado no tomes en cuenta la pregunta anterior.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Amigo Milson no coinciden las configuraciones

Publicado por Manuel Ruiz (33 intervenciones) el 08/11/2002 05:56:11
Hice lo que me indicaste y tienes razón no coinciden las configuraciones, aqui te mando el resulaltado. Por favor indicame como lo puedo arreglar, como te habras dado cuenta recien estoy empezando a usar el Oracle. Por cierto en mi Datawindow en el tipo de dato de uno de los campos sale decimal(0) y en mi tabla es NUMBER(5,2), creo que debe ser producto de lo que está mal configurado ¿no?, ese es el error.

SELECT * FROM nls_database_parameters;

PARAMETER VALUE
------------------------------ ---------------------------------
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CURRENCY $
NLS_ISO_CURRENCY AMERICA
NLS_NUMERIC_CHARACTERS .,
NLS_CHARACTERSET WE8ISO8859P1
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD-MON-RR
NLS_DATE_LANGUAGE AMERICAN
NLS_SORT BINARY
NLS_TIME_FORMAT HH.MI.SSXFF AM

PARAMETER VALUE
------------------------------ ---------------------------------
NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZH:TZM
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZH:TZM
NLS_DUAL_CURRENCY $
NLS_COMP BINARY
NLS_NCHAR_CHARACTERSET WE8ISO8859P1
NLS_RDBMS_VERSION 8.1.6.0.0

SQL> SELECT * FROM nls_session_parameters;

PARAMETER VALUE
------------------------------ -------
NLS_LANGUAGE SPANISH
NLS_TERRI
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

No coinciden las configuracion(Continuación)

Publicado por Manuel Ruiz (33 intervenciones) el 08/11/2002 13:14:10
SQL> SELECT * FROM nls_session_parameters;

PARAMETER VALUE
------------------------------ -------
NLS_LANGUAGE SPANISH
NLS_TERRITORY SPAIN
NLS_CURRENCY Pts
NLS_ISO_CURRENCY SPAIN
NLS_NUMERIC_CHARACTERS ,.
NLS_CALENDAR GREGORI
NLS_DATE_FORMAT DD/MM/R
NLS_DATE_LANGUAGE SPANISH
NLS_SORT SPANISH
NLS_TIME_FORMAT HH24:MI
NLS_TIMESTAMP_FORMAT DD/MM/R

PARAMETER VALUE
------------------------------ -------
NLS_TIME_TZ_FORMAT HH24:MI
NLS_TIMESTAMP_TZ_FORMAT DD/MM/R
NLS_DUAL_CURRENCY ¿
NLS_COMP BINARY
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

No coinciden las configuraciones(Continuación)

Publicado por Manuel Ruiz (33 intervenciones) el 08/11/2002 13:14:19
SQL> SELECT * FROM nls_session_parameters;

PARAMETER VALUE
------------------------------ -------
NLS_LANGUAGE SPANISH
NLS_TERRITORY SPAIN
NLS_CURRENCY Pts
NLS_ISO_CURRENCY SPAIN
NLS_NUMERIC_CHARACTERS ,.
NLS_CALENDAR GREGORI
NLS_DATE_FORMAT DD/MM/R
NLS_DATE_LANGUAGE SPANISH
NLS_SORT SPANISH
NLS_TIME_FORMAT HH24:MI
NLS_TIMESTAMP_FORMAT DD/MM/R

PARAMETER VALUE
------------------------------ -------
NLS_TIME_TZ_FORMAT HH24:MI
NLS_TIMESTAMP_TZ_FORMAT DD/MM/R
NLS_DUAL_CURRENCY ¿
NLS_COMP BINARY
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

la solucion es sencilla

Publicado por milson cardona (613 intervenciones) el 08/11/2002 13:39:04
Un saludo especial desde COLOMBIA

este problema es común cuando se tiene ORACLE 8i(817), a pesar que uno le diga que quiere hacer la instalación del cliente en ENGLISH, la instala en SPANISH.

Bueno.. la solución es muy sencilla, solo basta que sigas estos pasos, con cuidado porque vamos a tocar el REGEDIT

1- como te indique, vamos a tocar el regedit y aunque es sencillo lo que vamos a hacer, es mejor curarse en salud, por eso te recomiendo que hagas una copia del registro.

2- vamos a las entradas de ORACLE, en HKEY_LOCAL_MACHINE - SOFTWARE - ORACLE - HOME(X) donde X = 0 ó 1

3- buscamos la entrada NLS_LANG, debe de estar SPANISH.SPAIN.WE8ISO8859P1

4- cambiamos el valor de la entrada y le ponemos AMERICAN_AMERICA.WE8ISO8859P1

5- reinicias el equipo.

6- si haces las mismas consultas que te indique anteriormente, te darás cuenta que ahora las configuraciones coinciden en todo (creo)

así le decimos ORACLE(cliente) que la configuración será lenguaje AMERICAN territory AMERICA(eeuu) y que el set de caracteres será WE8ISO8859P1

creo que con esto solucionaras el problema, espero una respuesta bien sea que soluciones el problema o que necesites alguna otra ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ya me funcionó(pero tengo una duda)

Publicado por Manuel Ruiz (33 intervenciones) el 09/11/2002 05:25:53
Amigo Milson, ya me funcionó, pero tambien tuve que cambiar mi configuración regional. Lo malo es que aca en Perú la nomenclatura es ###,###.00 y he tenido que poner que sea ###.###,00
No habrá manera de que en lugar de cambiar el idioma del cliente cambiarel idioma del servidor a español?

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ya me funcionó(pero tengo una duda)

Publicado por Manuel Ruiz (33 intervenciones) el 09/11/2002 05:26:01
Amigo Milson, ya me funcionó, pero tambien tuve que cambiar mi configuración regional. Lo malo es que aca en Perú la nomenclatura es ###,###.00 y he tenido que poner que sea ###.###,00
No habrá manera de que en lugar de cambiar el idioma del cliente cambiar el idioma del servidor a español?

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ya me funcionó(pero tengo una duda)

Publicado por Edgar J guzman (1 intervención) el 25/04/2007 16:53:42
buen dia amigos :

tengo un problema similar al de ustedes !!
ORA-01722: invalid number me da este error corriendo un query sensillo pero me funciona contra otro server :

SELECT decode(RV_HIGH_VALUE, NULL, RV_LOW_VALUE, '7')
--INTO new_value
FROM cartera.CG_REF_CODES
WHERE ((RV_HIGH_VALUE IS NULL
AND to_number(7)
IN (to_number(RV_LOW_VALUE),to_number((RV_ABBREVIATION)) )
OR (to_number(7) BETWEEN
to_number(RV_LOW_VALUE)
AND to_number(RV_HIGH_VALUE)))
AND ROWNUM = 1
AND RV_DOMAIN = 'CART_CERTIFICADOS.CACE_ST_CERTIFICADO');

de antemano si lees esto gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar