Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая_Тюнин / poyasnitelnaya_zapiska_1.doc
Скачиваний:
28
Добавлен:
20.03.2016
Размер:
1.99 Mб
Скачать

Приложение 2. Код функции number2word

FUNCTION "NUMBER2WORD" (source IN NUMBER,md IN NUMBER) RETURN varchar2 is

result VARCHAR2(300);

temp VARCHAR2(50);

temp2 VARCHAR2(50);

tempnNUMBER;

BEGIN

--mdкаким образом будет производится перевод

--md=0 - возвращает число прописью и только (12.25=двенадцать)

--md=1 - денежный (12.25=двенадцать рублей 25 копеек)

--md=2 - целая дробная часть прописью (12.12=двенадцать целых двадцать пять сотых)

-- k - копейки

IF md=0 THEN

result := ltrim(to_char( source,

'9,9,,9,,,,,,9,9,,9,,,,,9,9,,9,,,,9,9,,9,,,.'));

ELSIF md=1 THEN

result := ltrim(to_char( source,

'9,9,,9,,,,,,9,9,,9,,,,,9,9,,9,,,,9,9,,9,,,.99')) || 'k';

ELSE

result := ltrim(to_char( source,

'9,9,,9,,,,,,9,9,,9,,,,,9,9,,9,,,,9,9,,9,,,.99')) || 'k';

tempn:=INSTR(result,'.');

temp:=SUBSTR(result,tempn+1,1);

temp:=temp||'D';

temp2:=SUBSTR(result,tempn+2,1);

temp:=temp||temp2||'S$';

result:=SUBSTR(result,1,tempn)||temp;

ENDIF;

-- t- тысячи;m- милионы;M- миллиарды;

result := replace( result, ',,,,,,', 'eM');

result := replace( result, ',,,,,', 'em');

result := replace( result, ',,,,', 'et');

-- e- единицы;d- десятки;c- сотни;

result := replace( result, ',,,', 'e');

result := replace( result, ',,', 'd');

result := replace( result, ',', 'c');

result := replace( result, '0c0d0et', '');

result := replace( result, '0c0d0em', '');

result := replace( result, '0c0d0eM', '');

result:=replace(result,'0D0S$','');

if result = '.' then

result := 'ноль ';

end if;

result := replace( result, '0c', '');

result := replace( result, '1c', 'сто ');

result := replace( result, '2c', 'двести ');

result := replace( result, '3c', 'триста ');

result := replace( result, '4c', 'четыреста ');

result := replace( result, '5c', 'пятьсот ');

result := replace( result, '6c', 'шестьсот ');

result := replace( result, '7c', 'семьсот ');

result := replace( result, '8c', 'восемьсот ');

result := replace( result, '9c', 'девятьсот ');

result := replace( result, '1d0e', 'десять ');

result := replace( result, '1d1e', 'одиннадцать ');

result := replace( result, '1d2e', 'двенадцать ');

result := replace( result, '1d3e', 'тринадцать ');

result := replace( result, '1d4e', 'четырнадцать ');

result := replace( result, '1d5e', 'пятнадцать ');

result := replace( result, '1d6e', 'шестнадцать ');

result := replace( result, '1d7e', 'семьнадцать ');

result := replace( result, '1d8e', 'восемнадцать ');

result := replace( result, '1d9e', 'девятнадцать ');

result := replace( result, '0d', '');

result := replace( result, '2d', 'двадцать ');

result := replace( result, '3d', 'тридцать ');

result := replace( result, '4d', 'сорок ');

result := replace( result, '5d', 'пятьдесят ');

result := replace( result, '6d', 'шестьдесят ');

result := replace( result, '7d', 'семьдесят ');

result := replace( result, '8d', 'восемьдесят ');

result := replace( result, '9d', 'девяносто ');

result := replace( result, '0e', '');

result := replace( result, '5e', 'пять ');

result := replace( result, '6e', 'шесть ');

result := replace( result, '7e', 'семь ');

result := replace( result, '8e', 'восемь ');

result := replace( result, '9e', 'девять ');

IF md=1 THEN

result := replace( result, '1e.', 'один рубль ');

result := replace( result, '2e.', 'два рубля ');

result := replace( result, '3e.', 'три рубля ');

result := replace( result, '4e.', 'четыре рубля ');

ELSE

result := replace( result, '1e.', 'один ');

result := replace( result, '2e.', 'два ');

result := replace( result, '3e.', 'три ');

result := replace( result, '4e.', 'четыре ');

END IF;

result := replace( result, '1et', 'одна тысяча ');

result := replace( result, '2et', 'две тысячи ');

result := replace( result, '3et', 'три тысячи ');

result := replace( result, '4et', 'четыре тысячи ');

result := replace( result, '1em', 'один миллион ');

result := replace( result, '2em', 'два миллиона ');

result := replace( result, '3em', 'три миллиона ');

result := replace( result, '4em', 'четыре миллиона ');

result := replace( result, '1eM', 'один милиард ');

result := replace( result, '2eM', 'два милиарда ');

result := replace( result, '3eM', 'три милиарда ');

result := replace( result, '4eM', 'четыре милиарда ');

IF md=1 THEN

result := replace( result, '11k', '11 копеек');

result := replace( result, '12k', '12 копеек');

result := replace( result, '13k', '13 копеек');

result := replace( result, '14k', '14 копеек');

result := replace( result, '1k', '1 копейка');

result := replace( result, '2k', '2 копейки');

result := replace( result, '3k', '3 копейки');

result := replace( result, '4k', '4 копейки');

END IF;

IF md=0 THEN

result := replace( result, '.', '');

ELSIF md=1 THEN

result := replace( result, '.', 'рублей ');

ELSE

result:=replace(result,'.','целых ');

END IF;

IF md=2 THEN

result := replace( result, '1D0S$', 'одна десятая ');

result := replace( result, '2D0S$', 'две десятых ');

result := replace( result, '3D0S$', 'три десятых ');

result := replace( result, '4D0S$', 'четыре десятых ');

result := replace( result, '5D0S$', 'пять десятых ');

result := replace( result, '6D0S$', 'шесть десятях ');

result := replace( result, '7D0S$', 'семь десятых ');

result := replace( result, '8D0S$', 'восемь десятых ');

result := replace( result, '9D0S$', 'девять десятых ');

result := replace( result, '1D1S$', 'одиннадцать сотых');

result := replace( result, '1D2S$', 'двенадцать сотых');

result := replace( result, '1D3S$', 'тринадцать сотых');

result := replace( result, '1D4S$', 'четырнадцать сотых');

result := replace( result, '1D5S$', 'пятьнадцать сотых');

result := replace( result, '1D6S$', 'шестьнадцать сотых');

result := replace( result, '1D7S$', 'семьнадцать сотых');

result := replace( result, '1D8S$', 'восемьнадцать сотых');

result := replace( result, '1D9S$', 'девятьнадцать сотых');

result := replace( result, '1S$', 'одна сотая');

result := replace( result, '0D', '');

result := replace( result, '2D', 'двадцать ');

result := replace( result, '3D', 'тридцать ');

result := replace( result, '4D', 'сорок ');

result := replace( result, '5D', 'пятьдесят ');

result := replace( result, '6D', 'шестьдесят ');

result := replace( result, '7D', 'семьдесят ');

result := replace( result, '8D', 'восемьдесят ');

result := replace( result, '9D', 'девяносто ');

result := replace( result, '0S', '');

result := replace( result, '2S', 'две ');

result := replace( result, '3S', 'три ');

result := replace( result, '4S', 'четыре ');

result := replace( result, '5S', 'пять ');

result := replace( result, '6S', 'шесть ');

result := replace( result, '7S', 'семь ');

result := replace( result, '8S', 'восемь ');

result := replace( result, '9S', 'девять ');

END IF;

result := replace( result, 't', 'тысяч ');

result := replace( result, 'm', 'миллионов ');

result := replace( result, 'M', 'милиардов ');

IF md=1 THEN

result := replace( result, 'k', ' копеек');

ELSE

result := replace( result, '$', ' сотых');

END IF;

result := Upper(SubStr(result, 1, 1)) || SubStr(result, 2);

RETURN(result);

END number2word;

/

43

Соседние файлы в папке Курсовая_Тюнин