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;
/