CODE DE CONVERSION D'UN MONTANT EN LETTRES SOUS PL/SQL

COURAW Messages postés 1 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 19 février 2003 - 19 févr. 2003 à 16:49
MAKHALID Messages postés 2 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 20 juin 2006 - 20 juin 2006 à 17:57
JE CHERCHE LE CODE SOURCE DE CONVERSION DE CHIFFRE EN LETTRES SOUS PL/SQL.

MERCI D'AVANCE

1 réponse

MAKHALID Messages postés 2 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 20 juin 2006
20 juin 2006 à 17:57
Bonjour
Voici deux fonctions avec un exemple d'utilisation
----------------------------------------------------------
FUNCTION to_word_en(pn$nombre IN NUMBER)
RETURN VARCHAR2
AS
--
TYPE table_varchar IS TABLE OF VARCHAR2 (255);

--
lv$multiples table_varchar := table_varchar ('',
' thousand ',
' million ',
' billion ',
' trillion ',
' quadrillion ',
' quintillion ',
' sextillion ',
' septillion ',
' octillion ',
' nonillion ',
' decillion ',
' undecillion ',
' duodecillion ',
' tridecillion ',
' quaddecillion ',
' quindecillion ',
' sexdecillion ',
' septdecillion ',
' octdecillion ',
' nondecillion ',
' dedecillion '
);

lv$entier VARCHAR2 (255) := TRUNC (TO_NUMBER (REPLACE (pn$nombre, ' ', '')));
lv$decimales VARCHAR2 (255) := SUBSTR (pn$nombre - lv$entier, 2);
lv$mots_complets VARCHAR2 (4000);
lv$entier_lettres VARCHAR2 (4000);
BEGIN
--
-- Traitement de la partie décimale
--
IF NVL (lv$decimales, 0) != 0
THEN
FOR i IN 1 .. lv$multiples.COUNT
LOOP
EXIT WHEN lv$decimales IS NULL;

--
IF (SUBSTR (lv$decimales, LENGTH (lv$decimales) - 2, 3) <> 0)
THEN
lv$mots_complets :=
TO_CHAR (TO_DATE (SUBSTR (lv$decimales,
LENGTH (lv$decimales) - 2,
3
),
'j'
),
'jsp'
)
|| lv$multiples (i)
|| lv$mots_complets;
END IF;

lv$decimales := SUBSTR (lv$decimales, 1, LENGTH (lv$decimales) - 3);
END LOOP;

-- Annonce la décimale (remplacer par Euro pour les montants en euros par exemple)
lv$mots_complets := ' point ' || lv$mots_complets;

END IF;

--
-- Traitement de la partie entière
--
IF NVL (lv$entier, 0) = 0
THEN
lv$mots_complets := 'zero';
ELSE
FOR i IN 1 .. lv$multiples.COUNT
LOOP
EXIT WHEN lv$entier IS NULL;

--
IF (SUBSTR (lv$entier, LENGTH (lv$entier) - 2, 3) <> 0)
THEN
lv$mots_complets :=
TO_CHAR (TO_DATE (SUBSTR (lv$entier, LENGTH (lv$entier) - 2,
3),
'j'
),
'jsp'
)
|| lv$multiples (i)
|| lv$mots_complets;
END IF;

lv$entier := SUBSTR (lv$entier, 1, LENGTH (lv$entier) - 3);
END LOOP;
END IF;

RETURN lv$mots_complets;
END to_word_en;
--------------------------------------------------------------------------
----------------------------------------------------------------------------
FUNCTION translate_fr(pn$nombre_en in varchar2)
RETURN VARCHAR2
AS
BEGIN
RETURN REPLACE( REPLACE( REPLACE( REPLACE( REPLACE(
REPLACE( REPLACE( REPLACE( REPLACE( REPLACE(
REPLACE( REPLACE( REPLACE( REPLACE( REPLACE(
REPLACE( REPLACE( REPLACE( REPLACE( REPLACE(
REPLACE( REPLACE( REPLACE( REPLACE( REPLACE(
REPLACE( REPLACE( REPLACE( REPLACE( REPLACE(
REPLACE( REPLACE( REPLACE( REPLACE( REPLACE(
REPLACE( REPLACE( REPLACE( REPLACE( REPLACE(
REPLACE( REPLACE( REPLACE( REPLACE( REPLACE(
REPLACE( REPLACE( REPLACE( REPLACE( REPLACE(
REPLACE( REPLACE( REPLACE( REPLACE( REPLACE(
REPLACE( REPLACE( REPLACE( REPLACE( REPLACE(
REPLACE( REPLACE( REPLACE( REPLACE( REPLACE(
REPLACE( REPLACE( REPLACE( REPLACE( REPLACE(
REPLACE( REPLACE( REPLACE( REPLACE( REPLACE(
REPLACE( REPLACE( REPLACE( REPLACE( REPLACE(
REPLACE( REPLACE( REPLACE( REPLACE( REPLACE(
REPLACE( REPLACE( REPLACE( REPLACE( REPLACE(
REPLACE( REPLACE( REPLACE( REPLACE( REPLACE(
REPLACE( REPLACE( REPLACE( REPLACE( REPLACE(
REPLACE( REPLACE( REPLACE( REPLACE( REPLACE(
REPLACE( REPLACE( REPLACE( REPLACE( REPLACE(
REPLACE( REPLACE( REPLACE( REPLACE(
pn$nombre_en
, 'million' , 'millions' )
, 'billion' , 'milliards' )
, 'trillion' , 'trillions' )
, 'quadrillion' , 'quadrillions' )
, 'quintillion' , 'cintillions' )
, 'sextillion' , 'sextillions' )
, 'septillion' , 'septillions' )
, 'octillion' , 'octillions' )
, 'nonillion' , 'nonillions' )
, 'decillion' , 'decillions' )
, 'undecillion' , 'undecillions' )
, 'duodecillion' , 'duodecillions' )
, 'tridecillion' , 'tridecillions' )
, 'quaddecillion' , 'quaddecillions' )
, 'quindecillion' , 'quindecillions' )
, 'sexdecillion' , 'sexdecillions' )
, 'septdecillion' , 'septdecillions' )
, 'octdecillion' , 'octdecillions' )
, 'nondecillion' , 'nondecillions' )
, 'dedecillion' , 'dedecillions' )
, 'thousand' , 'mille' )
, 'hundred' , 'cent' )
, 'ninety' , 'quatre-vingt-dix')
, 'eighty' , 'quatre-vingts' )
, 'seventy' , 'soixante-dix' )
, 'sixty' , 'soixante' )
, 'fifty' , 'cinquante' )
, 'forty' , 'quarante' )
, 'thirty' , 'trente' )
, 'twenty' , 'vingt' )
, 'nineteen' , 'dix-neuf' )
, 'eighteen' , 'dix-huit' )
, 'seventeen' , 'dix-sept' )
, 'sixteen' , 'seize' )
, 'fifteen' , 'quinze' )
, 'fourteen' , 'quatorze' )
, 'thirteen' , 'treize' )
, 'twelve' , 'douze' )
, 'eleven' , 'onze' )
, 'ten' , 'dix' )
, 'nine' , 'neuf' )
, 'eight' , 'huit' )
, 'seven' , 'sept' )
, 'five' , 'cinq' )
, 'four' , 'quatre' )
, 'three' , 'trois' )
, 'two' , 'deux' )
, 'one' , 'un' )
, 'dix-six' , 'seize' )
, 'dix-cinq' , 'quinze' )
, 'dix-quatre' , 'quatorze' )
, 'dix-trois' , 'treize' )
, 'dix-deux' , 'douze' )
, 'dix-un' , 'onze' )
, '-un ' , '-une ' )
, 'un cent' , 'cent' )
, 'un mille' , 'mille' )
, 'une' , 'un' )
, 'soixante-onze' , 'soixante et onze')
, 'quatre-vingts-' , 'quatre-vingt-' )
, '-un' , ' et un' )
, 'quatre-vingt et un', 'quatre-vingt-un' )
, 'deux cent' , 'deux cents' )
, 'trois cent' , 'trois cents' )
, 'quatre cent' , 'quatre cents' )
, 'cinq cent' , 'cinq cents' )
, 'six cent' , 'six cents' )
, 'sept cent' , 'sept cents' )
, 'huit cent' , 'huit cents' )
, 'neuf cent' , 'neuf cents' )
, 'cents ' , 'cent ' )
, 'un millions' , 'un million' )
, 'un bidecillions' , 'un bidecillion' )
, 'un cintillions' , 'un cintillion' )
, 'un milliards' , 'un milliard' )
, 'un trillions' , 'un trillion' )
, 'un quadrillions' , 'un quadrillion' )
, 'un sextillions' , 'un sextillion' )
, 'un septillions' , 'un septillion' )
, 'un octillions' , 'un octillion' )
, 'un nonillions' , 'un nonillion' )
, 'un decillions' , 'un decillion' )
, 'un undecillions' , 'un undecillion' )
, 'un duodecillions' , 'un duodecillion' )
, 'un tridecillions' , 'un tridecillion' )
, 'un quaddecillions' , 'un quaddecillion' )
, 'un quindecillions' , 'un quindecillion' )
, 'un sexdecillions' , 'un sexdecillion' )
, 'un septdecillions' , 'un septdecillion' )
, 'un octdecillions' , 'un octdecillion' )
, 'un nondecillions' , 'un nondecillion' )
, 'un dedecillions' , 'un dedecillion' )
, '-un trillion' , '-un trillions' )
, '-un quadrillion' , '-un quadrillions' )
, '-un sextillion' , '-un sextillions' )
, '-un septillion' , '-un septillions' )
, '-un octillion' , '-un octillions' )
, '-un nonillion' , '-un nonillions' )
, '-un decillion' , '-un decillions' )
, '-un undecillion' , '-un undecillions' )
, '-un duodecillion' , '-un duodecillions' )
, '-un tridecillion' , '-un tridecillions' )
, '-un quaddecillion' , '-un quaddecillions')
, '-un quindecillion' , '-un quindecillions')
, '-un sexdecillion' , '-un sexdecillions' )
, '-un septdecillion' , '-un septdecillions')
, '-un octdecillion' , '-un octdecillions' )
, '-un nondecillion' , '-un nondecillions' )
, '-un dedecillion' , '-un dedecillions' )
, '-un million' , '-un millions' )
, '-un bidecillion' , '-un bidecillions')
, '-un cintillion' , '-un cintillions' )
, '-un milliard' , '-un milliards' )
, 'point' , 'dirhams et' ) ||' cts'
;
END translate_fr;
----------------------------------------------------------------------
exemple d'utilisation
BEGIN
dbms_output.put_line(translate_fr(to_word_en ( 1350 )));

END;
0
Rejoignez-nous