Oracle - PROGRAMA PL/SQL CONVERTIR NUMEROS EN LETRAS

 
Vista:

PROGRAMA PL/SQL CONVERTIR NUMEROS EN LETRAS

Publicado por PAOLO REVOLLAR (2 intervenciones) el 27/11/2005 03:33:04
HOLA NECESITO HACER UN PROGRAMA PL/SQL PARA CONVERTIR NUMEROS A LETRAS CON UN RANGO DE 0 A 99999,
POR EJEMPLO
NUMERO: 13456
CADENA: TRECE MIL CUATROCIENTOS CINCUENTA Y SEIS
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:PROGRAMA PL/SQL CONVERTIR NUMEROS EN LETRAS

Publicado por Paoti Rios (3 intervenciones) el 29/11/2005 20:12:39
Te adjunto este link donde esta la solución a tu problema.

solo debes de traducir las literales.

saludos desde Guadalajara México

http://www.materialdreams.com/oracle/scripts.html
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:PROGRAMA PL/SQL CONVERTIR NUMEROS EN LETRAS

Publicado por ulises (41 intervenciones) el 01/12/2005 15:05:46
HOLA

MIRA ESTE ES UN PACKAGE QUE TIENE UN PAR DE FUNCIONES PARA CONVERTIR LOS NUMEROS A LETRAS LO PUEDES PONER EN
LA BASE Y LLAMARLA DESDE DONDE LA NECESITAS QUE TE DEVOLVERA EL VALOR EN ELTRAS DEL NUMERO QUE LE ENVIASTES COMO PARAMETRO

EJEMPLO DE LA LLAMADA
MONTO_LETRAS := PR_num_a_letras.dintex(NVL(VALOR,0));

************************PACKAGES ENCABEZADO****************************
CREATE OR REPLACE PACKAGE PR_NUM_A_LETRAS IS
--
-- Retrofitted
FUNCTION DinTex( x IN number )RETURN varchar2;
--
-- Retrofitted
FUNCTION NumTex( x IN number )
RETURN varchar2;
PRAGMA RESTRICT_REFERENCES (dintex, WNDS, WNPS);
PRAGMA RESTRICT_REFERENCES (numtex, WNDS, WNPS);
END PR_NUM_A_LETRAS;
/
************************PACKAGES BODY****************************
CREATE OR REPLACE PACKAGE BODY PR_NUM_A_LETRAS AS

--
-- Retrofitted
FUNCTION Excepcion(
i IN integer )
RETURN varchar2;
--
-- Retrofitted
FUNCTION Decena(
i IN integer )
RETURN varchar2;
--
-- Retrofitted
FUNCTION Centena(
i IN integer )
RETURN varchar2;
--
-- Retrofitted
FUNCTION Diez(
i IN integer )
RETURN varchar2;
--
-- Retrofitted
FUNCTION Cien(
i IN integer )
RETURN varchar2;
--
-- Retrofitted
FUNCTION mil(
i IN integer )
RETURN varchar2;
--
-- Retrofitted
FUNCTION Millon(
i IN integer )
RETURN varchar2;
--
-- Retrofitted
FUNCTION Excepcion(
i IN integer )
RETURN varchar2 IS
--
--
v_r VARCHAR2(15);
BEGIN
IF i < 10 THEN
SELECT
DECODE(i, 0, '', 1, 'un', 2, 'dos', 3, 'tres', 4, 'cuatro',
5, 'cinco', 6, 'seis', 7, 'siete', 8, 'ocho', 9, 'nueve')
INTO
v_r
FROM
dual;
ELSIF
i < 20 THEN
SELECT
DECODE(i, 10, 'diez', 11, 'once', 12, 'doce', 13, 'trece',
14, 'catorce', 15, 'quince', 16, 'dieciseis', 17, 'diecisiete',
18, 'dieciocho', 19, 'diecinueve')
INTO
v_r
FROM
dual;
ELSE
SELECT
DECODE(i, 20, 'veinte', 21, 'veintiun', 22, 'veintidos',
23, 'veintitres', 24, 'veinticuatro', 25, 'veinticinco',
26, 'veintiseis', 27, 'veintisiete', 28, 'veintiocho',
29, 'veintinueve')
INTO
v_r
FROM
dual;
END IF;
RETURN v_r;
END;
--
-- Retrofitted
FUNCTION Decena(
i IN integer )
RETURN varchar2 IS
--
--
v_r VARCHAR2(15);
BEGIN
SELECT
DECODE(i, 0, '', 1, '', 2, '', 3, 'treinta', 4, 'cuarenta',
5, 'cincuenta', 6, 'sesenta', 7, 'setenta', 8, 'ochenta',
9, 'noventa')
INTO
v_r
FROM
dual;
RETURN v_r;
END;
--
-- Retrofitted
FUNCTION Centena(
i IN integer )
RETURN varchar2 IS
--
--
v_r VARCHAR2(15);
BEGIN
SELECT
DECODE(i, 0, '', 1, 'ciento', 2, 'doscientos', 3, 'trescientos',
4, 'cuatrocientos', 5, 'quinientos', 6, 'seiscientos', 7, 'setecientos',
8, 'ochocientos', 9, 'novecientos')
INTO
v_r
FROM
dual;
RETURN v_r;
END;
--
-- Retrofitted
FUNCTION Diez(
i IN integer )
RETURN varchar2 IS
--
--
TDiez VARCHAR2(50);
BEGIN
IF i < 30 THEN
TDiez := Excepcion(i);
ELSE
TDiez := Decena(TRUNC(i/10));
IF MOD(i, 10) <> 0 THEN
TDiez := TDiez || ' y '|| excepcion(i MOD 10);
END IF;
END IF;
RETURN(TDiez);
END;
--
-- Retrofitted
FUNCTION Cien(
i IN integer )
RETURN varchar2 IS
--
--
TCien VARCHAR2(50);
BEGIN
IF i = 100 THEN
TCien := 'cien';
ELSE
TCien := centena(TRUNC(i / 100));
IF MOD(i, 100) <> 0 THEN
IF TRUNC(i / 100) <> 0 THEN
TCien := TCien || ' ';
END IF;
TCien := TCien || diez(MOD(i, 100));
END IF;
END IF;
RETURN(TCien);
END;
--
-- Retrofitted
FUNCTION mil(
i IN integer )
RETURN varchar2 IS
--
--
TMil VARCHAR2(100);
BEGIN
IF TRUNC(i/1000) = 1 THEN
TMil := 'mil';
IF MOD(i, 1000) <> 0 THEN
TMil := TMil || ' ';
END IF;
TMil := TMil || Cien(MOD(i, 1000));
ELSIF
TRUNC(i/1000) = 0 THEN
TMil := Cien(i);
ELSE
TMil := Cien(TRUNC(i/1000)) || ' mil';
IF MOD(i, 1000) <> 0 THEN
TMil := TMil || ' ';
END IF;
TMil := TMil || Cien(MOD(i, 1000));
END IF;
RETURN(TMil);
END;
--
-- Retrofitted
FUNCTION Millon(
i IN integer )
RETURN varchar2 IS
--
--
TMillon VARCHAR2(150);
BEGIN
IF i >= 0 THEN
IF i = 0 THEN
TMillon := 'cero';
ELSIF
TRUNC(i/1000000) = 0 THEN
TMillon := Mil(i);
ELSIF
TRUNC(i/1000000) = 1 THEN
TMillon := 'un millon';
IF MOD(i, 1000000) <> 0 THEN
TMillon := TMillon || ' ';
END IF;
TMillon := TMillon || Mil(MOD(i, 1000000));
ELSE
TMillon := Mil(TRUNC(i/1000000)) || ' millones';
IF(MOD(i, 1000000)) <>0 THEN
TMillon := TMillon || ' ';
END IF;
TMillon := TMillon || Mil(MOD(i, 1000000));
END IF;
IF(MOD(i, 10) =1) AND(MOD(i, 100) <> 11) THEN
TMillon := TMillon || 'o';
END IF;
END IF;
RETURN(TMillon);
END;
--
-- Retrofitted
FUNCTION DinTex(
x IN number )
RETURN varchar2 IS
--
--
Texto VARCHAR2(150);
--
--
IntX NUMBER;
--
--
FraX INTEGER;
BEGIN
IF x < 2147483647 AND x >= 0 THEN
Intx := TRUNC(x);
Texto := Millon(Intx);
FraX := TRUNC((x - Intx) * 100 + 0.5);
Texto := Texto || TO_CHAR(Frax, '00') || '/100';
END IF;
RETURN(Texto);
END;
--
-- Retrofitted
FUNCTION NumTex(
x IN number )
RETURN varchar2 IS
--
--
Texto VARCHAR2(150);
--
--
IntX NUMBER;
BEGIN
IF x < 2147483647 AND x >= 0 THEN
Intx := TRUNC(x);
Texto := Millon(Intx);
END IF;
RETURN(Texto);
END;
END PR_NUM_A_LETRAS;
/
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:PROGRAMA PL/SQL CONVERTIR NUMEROS EN LETRAS

Publicado por Luis (3 intervenciones) el 05/12/2005 20:42:03
Select decode( sign( &num ), -1, 'Negative ', 0, 'Zero', NULL ) ||
decode( sign( abs(&num) ), +1, to_char( to_date( abs(&num),'J'),'Jsp') )
From Dual

esto es todo.
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:PROGRAMA PL/SQL CONVERTIR NUMEROS EN LETRAS

Publicado por ULISES (41 intervenciones) el 09/12/2005 17:22:48
HOLA LUIS

Prove el ejemplo que indicas para convertir los numeros en letras, y funciona bien es bastante simple, pero solo tengo una duda como hago para que el resultado lo muestre en ESPAÑOL . en el registro ya tengo seteado la cadena NLS_LANG y su valor es SPANISH_SPAIN.WE8ISO8859P1 pero el resultado me aparece siempre en Ingles
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:PROGRAMA PL/SQL CONVERTIR NUMEROS EN LETRAS

Publicado por leto (1 intervención) el 21/02/2011 11:32:14
aquí os hay un buen procedimiento:

http://www.deletesql.com/viewtopic.php?f=10&t=379
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:PROGRAMA PL/SQL CONVERTIR NUMEROS EN LETRAS

Publicado por EDWIN (1 intervención) el 01/09/2011 18:34:53
ESE PAQUETE DE ESE LINK ES BUENISIMO JUSTO LO QUE BUSCABA GRACIAS POR EL APORTE LETO
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:PROGRAMA PL/SQL CONVERTIR NUMEROS EN LETRAS

Publicado por erick_max (1 intervención) el 05/11/2007 22:55:16
pos si la saben escribanla q he visto algunas en otros foros mejores pero no funcionan.

oralex
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:PROGRAMA PL/SQL CONVERTIR NUMEROS EN LETRAS

Publicado por Pablo de León (1 intervención) el 10/04/2013 22:45:28
Gracias por compartir el conocimiento. Muy bueno!
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