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

Conversion cadena en numero - oracle

Estas en el tema de Conversion cadena en numero - oracle en el foro de Oracle en Foros del Web. Buenas tardes: Espero que alguien me pueda ayudar!! Estoy tratando de realizar la conversión de una variable varchar2 en numerico,esta variable tiene almacenado una cantidad ...
  #1 (permalink)  
Antiguo 30/04/2012, 12:33
 
Fecha de Ingreso: octubre-2008
Mensajes: 10
Antigüedad: 15 años, 5 meses
Puntos: 0
Pregunta Conversion cadena en numero - oracle

Buenas tardes:
Espero que alguien me pueda ayudar!! Estoy tratando de realizar la conversión de una variable varchar2 en numerico,esta variable tiene almacenado una cantidad en notacion científica y quiero que se almacene todo el valor sin notacion cientifica... Anexo mi codigo...
No entiendo bien que estoy haciendo mal...
Gracias!!

Esta variable (lcampo) esta declarada como varchar2;
lquery := lquery || to_char(lcampo);

Esta variable (lcampo) la declare como number a 20 posiciones;
lc := to_number(lcampo,'999999999999.99');

El valor que me arroja es
ORA-06502: PL/SQL:numeric or value error
  #2 (permalink)  
Antiguo 30/04/2012, 18:12
Avatar de matanga  
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 16 años, 5 meses
Puntos: 85
Respuesta: Conversion cadena en numero - oracle

El código con la función to_number() es correcto, en este caso, el error ORA-06502 puede ser por:

1. El valor de lcampo contiene caracteres no numéricos.

Código:
declare
 i number(8);
begin
 i := to_number( '123.4a' , '999.99' );
end;
2. La longitud de la máscara es inferior al valor de lcampo.

Código:
declare
 i number(8);
begin
 i := to_number( '123.45' , '99.99' );
end;
3. La precisión de la variable es inferior al valor de lcampo.

Código:
declare
 i number(1);
begin
 i := to_number( '123.45' , '999.99' );
end;
Saludos
  #3 (permalink)  
Antiguo 02/05/2012, 03:05
 
Fecha de Ingreso: marzo-2012
Mensajes: 11
Antigüedad: 12 años, 1 mes
Puntos: 2
Respuesta: Conversion cadena en numero - oracle

Buenos días Kary_becky

A mi me paso el Lunes lo mismo y en mi caso fué que el campo, en tu caso 'lcampo', estaba separado el decimal por una coma:

Ej:'123,45'

La función to_number no entiende esta coma y te devuelve el error mencionado.

En este caso lo que hice fue utilizar la función to_char para cambiar la coma por un punto y a continuación usar to_number. De esta forma:

to_number(to_char('123,45','999.99'),'999.99')

De esta forma me funcionó, de todas formas y tal y como a dicho matanga asegurate que la máscara del formato se ajusta al campo que quieres transformar.

Espero que esto tambien te ayude

Un saludo
  #4 (permalink)  
Antiguo 02/05/2012, 08:38
 
Fecha de Ingreso: octubre-2008
Mensajes: 10
Antigüedad: 15 años, 5 meses
Puntos: 0
Pregunta Conversion cadena en numero - oracle

Hola!! mil gracias por su respuesta... ya vi que mi problema es que como la cantidad que estoy intentando almacenar en la tabla es en millones, se envía esta variable abreviada con notación cientifica. Y efectivamente, se envía una letra cuando lo quiero convertir a número...

Cantidad en millones:
12395185.11

Cantidad en notación cientifica:
1.239518511E7

Como poder hacer que esta función de to_number no tome en cuenta la letra de la notación cientifica???

Gracias por el apoyo.
  #5 (permalink)  
Antiguo 03/05/2012, 03:00
 
Fecha de Ingreso: marzo-2012
Mensajes: 11
Antigüedad: 12 años, 1 mes
Puntos: 2
Respuesta: Conversion cadena en numero - oracle

Buenas

Mira esto que a mi me ha funcionado

to_number(to_char(1.239518511E7,'99999999.99'),'99 999999.99')

Un saludo

Etiquetas: conversion, numero, sql, campos, cadenas
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 06:24.