Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Introducir datos de tipo carácter como numéricos en PL/SQL

Estas en el tema de Introducir datos de tipo carácter como numéricos en PL/SQL en el foro de Oracle en Foros del Web. Buenos días. Tengo dos tablas, en una sus columnas son de tipo VARCHAR2(10) y en la otra sus columnas son de tipo NUMBER(10,2). En la ...
  #1 (permalink)  
Antiguo 06/02/2007, 04:45
 
Fecha de Ingreso: febrero-2007
Mensajes: 4
Antigüedad: 17 años, 9 meses
Puntos: 0
Pregunta Introducir datos de tipo carácter como numéricos en PL/SQL

Buenos días.

Tengo dos tablas, en una sus columnas son de tipo VARCHAR2(10) y en la otra sus columnas son de tipo NUMBER(10,2). En la primera tabla tengo una data numérica pero sin un formato definido, los puntos y las comas se turnan para ser separador de decimales o separador de miles. Con una rutina que convierte un parámetro de tipo carácter que tiene un valor numérico sin formato definido, la convierte el valor en numérico con formato 99,999.99

El problema es que cuando hago un INSERT o un UPDATE en la tabla de tipo numérico (es la segunda tabla) tengo que utilizar la función TO_NUMBER(valor,’999G999D99’) para introducir el valor numérico en esta tabla, pero me introduce los números sin puntos ni comas. Es decir un valor de tipo carácter x con un valor 1,1 lo convierte en 1.1 y cuando lo inserta o actualiza lo convierte en 11, claro 11 no es igual a 1.1 ¿Seria tan amable de decirme como puedo hacer para que la función TO_NUMBER(x,’999G999D99’) en las funciones INSERT o UPDATE introduzca o actualice el valor verdadero?

Esperando vuestra certera respuesta, se despide. Atentamente,


Daniel
  #2 (permalink)  
Antiguo 06/02/2007, 08:36
Avatar de Linterns
Colaborador
 
Fecha de Ingreso: diciembre-2001
Mensajes: 2.799
Antigüedad: 22 años, 11 meses
Puntos: 11
Re: Introducir datos de tipo carácter como numéricos en PL/SQL

Puedes hacer dos cosas; o en los parámetros de la base de datos cambiar el NLS_NUMERIC_CHARACTERS y NLS_LANGUAGE; o simplemente en cada sesion al iniciarla si no te atreves a tocar la BBDD.

En una instancia de SQL> prueba ejecutar la siguiente sintaxis

Código:
SQL> Alter session set NLS_NUMERIC_CHARACTER = ".,";
__________________
Bien se puede recibir una puñalada sin adulación,
pero rara vez se recibe una adulación sin puñalada
** ***
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:36.