Oracle - convertir numeros a texto en español

 
Vista:

convertir numeros a texto en español

Publicado por stephany (3 intervenciones) el 06/01/2006 19:29:02
HOLAS:
ESTOY INICIANDOME EN LA PROGRAMACION EN ORACLE Y NECESITO LA FUNCION O CODIGO PARA CONVERTIR POR EJM AL DIGITAR 425 LO CONVIERTA EN TEXTO Cuatrocientos veinte y cinco
EN ESPAÑOL Y NO EN INGLES. Y SI SE NECESITA CREAR UN PAQUETE PARA Q FUNCIONE. GRACIAS POR LA ATENCION.
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:convertir numeros a texto en español

Publicado por Luis (2 intervenciones) el 07/01/2006 22:22:38
HOla, aqui te mando un script para crear una funcion almacenada en Oracle que te ayude a resolver este problema. Vas a tener que revisarla porque no la probe para ver si funciona o por si tuviera errores de sintaxis pero la logica es mas o menos asi.
-----------------------------------------------------------------------------------------------
Create or Replace Function Convertir(Numero number) return varchar2 is

Unidad number(1):=0;
Decena number(1):=0;
Centena number(1):=0;
Unidad_Mil number(1):=0;

Texto varchar2(100);

BEGIN

Unidad_Mil:= Trunc(Numero/1000); --Obtenemos 1er. digito
Numero:= MOD(Numero,1000); -- Es como que hicieramos Numero:=NUmero-(Unidad_Mil*1000)

Centena:= Trunc(Numero/100); --Obtenemos 2do. digito
Numero:= MOD(Numero,100);

Decena:= Trunc(Numero/10); --Obtenemos 3er. digito
Unidad:= MOD(Numero,10); --Obtenemos 4to. digito

select decode(Unidad_Mil,1,'Mil ',2,'Dos Mil ',3,'Tres Mil ',4,'Cuatro Mil ',5,'Cinco Mil ',
6,'Seis Mil ',7,'Siete mil ',8,'Ocho mil ',9,'Nueve Mil ','')
into Texto
from dual;

select Texto||decode(Centena,1,'Ciento ',2,'doscientos ',3,'trescientos ',4,'cuatrocientos ',
5,'quinientos ',6,'seiscientos ',7,'setecientos ',8,'ochocientos ',9,'novecientos ','')
into Texto
from dual;


if (Decena = 1) then
select Texto||decode(Decena,1,'once',2,'doce',3,'trece',4,'catorce',
5,'quince',6,'dieciseis',
7,'diecisiete',8,'dieciocho',9,'diecinueve','')
into Texto
from dual;
else
select Texto||decode(Decena,2,'veinti',3,'treinta y ',4,'cuarenta y ',
5,'cincuenta y ',6,'sesenta y ',7,'setenta y ',8,'ochenta y ',
9,'noventa y ','')
into Texto
from dual;
end if;

if (Decena <> 1) then
select Texto||decode(Unidad,1,'uno',2,'dos',3,'tres',4,'cuatro',
5,'cinco',6,'seis',7,'siete',8,'ocho',9,'nueve','')
into Texto
from dual;
end if;

REturn Texto;
END;
/
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:convertir numeros a texto en español

Publicado por stephany (3 intervenciones) el 09/01/2006 14:58:33
LO HE REVISADO Y ME SALEN ERRORES A PESAR Q LO HE ANALIZADO :(
OJALA PUEDAN AYUDARME

SQL> SHOW ERRORS;
Errors for FUNCTION CONVERTIR:

LINE/COL ERROR
-------- -----------------------------------------------------------------
13/1 PLS-00363: expression 'NUMERO' cannot be used as an assignment
target

13/1 PL/SQL: Statement ignored
15/1 PLS-00363: expression 'NUMERO' cannot be used as an assignment
target

15/1 PL/SQL: Statement ignored
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:convertir numeros a texto en español

Publicado por stephany (3 intervenciones) el 09/01/2006 15:10:55
:) AHORA SOLO TENGO UN ERROR:
UNA VEZ Q ME SALGA EL CODIGO LLAMO A LA FUNCION? Q PARAMETRO?
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:convertir numeros a texto en español

Publicado por guille (1 intervención) el 03/08/2007 16:22:26
EL SP tenia errores lo arme para q ande hasta el 100.. (bah 99).. lo deje como script.. espero les sirva saludos

DECLARE
vUnidad number(1):=0;
vDecena number(1):=0;
vCentena number(1):=0;
vUnidadMil number(1):=0;
vTexto varchar2(100);
vNumero number(10):=0;
BEGIN
FOR i in 1..99 loop
vNumero := vNumero +1; --esto es provisorio solo para testear
vUnidadMil:= Trunc(vNumero/1000); --Obtenemos 1er. digito
vNumero:= MOD(vNumero,1000); --Es como que hicieramos Numero:=NUmero-(Unidad_Mil*1000)

vCentena:= Trunc(vNumero/100); --Obtenemos 2do. digito
vNumero:= MOD(vNumero,100);

vDecena:= Trunc(vNumero/10); --Obtenemos 3er. digito
vUnidad:= MOD(vNumero,10); --Obtenemos 4to. digito

SELECT decode(vUnidadMil,1,'Mil ',2,'Dos Mil ',3,'Tres Mil ',4,'Cuatro Mil ',5,'Cinco Mil ',
6,'Seis Mil ',7,'Siete mil ',8,'Ocho mil ',9,'Nueve Mil ','')
INTO vTexto
FROM dual;

SELECT vTexto||decode(vCentena,1,'Ciento ',2,'doscientos ',3,'trescientos ',4,'cuatrocientos ',
5,'quinientos ',6,'seiscientos ',7,'setecientos ',8,'ochocientos ',9,'novecientos ','')
INTO vTexto
FROM dual;

IF (vDecena = 1) THEN
SELECT vTexto||decode(vUnidad,0,'diez',1,'once',2,'doce',3,'trece',4,'catorce',
5,'quince',6,'dieciseis',7,'diecisiete',8,'dieciocho',9,'diecinueve','')
INTO vTexto
FROM dual;
ELSE
IF (vUnidad = 0) THEN
SELECT vTexto||decode(vDecena,2,'veinte',3,'treinta',4,'cuarenta',
5,'cincuenta',6,'sesenta',7,'setenta',8,'ochenta',9,'noventa','')
INTO vTexto
FROM DUAL;
ELSE
SELECT vTexto||decode(vDecena,2,'veinti',3,'treinta y ',4,'cuarenta y ',
5,'cincuenta y ',6,'sesenta y ',7,'setenta y ',8,'ochenta y ',9,'noventa y ','')
INTO vTexto
FROM dual;
END IF;
END IF;

IF(vDecena <> 1) then
SELECT vTexto||decode(vUnidad,1,'uno',2,'dos',3,'tres',4,'cuatro',
5,'cinco',6,'seis',7,'siete',8,'ocho',9,'nueve','')
INTO vTexto
FROM dual;
END IF;

DBMS_OUTPUT.PUT_LINE(vTexto);
END LOOP;
END;
/
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:convertir numeros a texto en español

Publicado por erick (1 intervención) el 20/09/2012 02:47:52
hola soy nuevo en esto y ni idea no se si me puedas explicar bien el codigo lo agradeceria
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

convertir numeros a texto en español

Publicado por antonio (1 intervención) el 15/05/2009 19:21:34
58 30 30 30 31 33 38 43 43 34 46 35 36
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:convertir numeros a texto en español

Publicado por JSL (186 intervenciones) el 12/01/2006 02:09:18
/* WWW: http://www.materialdreams.com/oracle */

Revisa esta pagina ... viene el codigo, igual y te sirve, hay que poner en español
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