26
2014
Sayıyı Para türüne Göre Yazıyla Gösteren Fonksiyon
Merhaba,
İnternette bu işlemi yapan birçok fonksiyon bulabilirsiniz.Size kendi yazdığımız fonskiyonu paylaşmak istiyorum.
select APPS.XXTT_PARA_YAZIYLA(252302.23) from dual
Çıktı olarak : YALNIZ# İKİYÜZELLİİKİBİNÜÇYÜZİKİ# TL.. # YİRMİÜÇ# KRS. dur değerini verir
CREATE OR REPLACE FUNCTION APPS.”XXTT_PARA_YAZIYLA” (
p_sayi NUMBER,
p_currency IN VARCHAR2 DEFAULT ‘TRL’,
p_ozel IN VARCHAR2 DEFAULT ‘N’
)
RETURN VARCHAR2
IS
l_virgulden_once INTEGER;
l_virgulden_sonra INTEGER;
l_once_bas_say PLS_INTEGER;
l_sonra_bas_say PLS_INTEGER;
l_virgul_o_yaziyla VARCHAR2 (255);
l_virgul_s_yaziyla VARCHAR2 (255);
l_sonuc VARCHAR2 (255);
l_dies VARCHAR2 (3) := ‘# ‘;
l_yalniz VARCHAR2 (7) := ‘YALNIZ’;
l_index PLS_INTEGER;
l_mod3 PLS_INTEGER := 0;
l_zero PLS_INTEGER := 0;
l_index_fark PLS_INTEGER;
TYPE my_array IS TABLE OF VARCHAR2 (30)
INDEX BY PLS_INTEGER;
TYPE p_ondaliklar IS TABLE OF my_array
INDEX BY PLS_INTEGER;
p_birler my_array;
p_onlar my_array;
p_yuzler my_array;
p_binler my_array;
p_milyon my_array;
p_milyar my_array;
p_trilyon my_array;
p_trilyar my_array;
p_katrilyon my_array;
p_katrilyar my_array;
p_ondalık p_ondaliklar;
BEGIN
p_birler (0) := NULL;
p_birler (1) := ‘BİR’;
p_birler (2) := ‘İKİ’;
p_birler (3) := ‘ÜÇ’;
p_birler (4) := ‘DÖRT’;
p_birler (5) := ‘BEŞ’;
p_birler (6) := ‘ALTI’;
p_birler (7) := ‘YEDİ’;
p_birler (8) := ‘SEKİZ’;
p_birler (9) := ‘DOKUZ’;
p_onlar (0) := NULL;
p_onlar (1) := ‘ON’;
p_onlar (2) := ‘YİRMİ’;
p_onlar (3) := ‘OTUZ’;
p_onlar (4) := ‘KIRK’;
p_onlar (5) := ‘ELLİ’;
p_onlar (6) := ‘ALTMIŞ’;
p_onlar (7) := ‘YETMİŞ’;
p_onlar (8) := ‘SEKSEN’;
p_onlar (9) := ‘DOKSAN’;
p_yuzler (0) := NULL;
p_yuzler (1) := ‘YÜZ’;
p_yuzler (2) := ‘İKİYÜZ’;
p_yuzler (3) := ‘ÜÇYÜZ’;
p_yuzler (4) := ‘DÖRTYÜZ’;
p_yuzler (5) := ‘BEŞYÜZ’;
p_yuzler (6) := ‘ALTIYÜZ’;
p_yuzler (7) := ‘YEDİYÜZ’;
p_yuzler (8) := ‘SEKİZYÜZ’;
p_yuzler (9) := ‘DOKUZYÜZ’;
p_binler (0) := ‘BİN’;
p_binler (1) := ‘BİRBİN’;
p_binler (2) := ‘İKİBİN’;
p_binler (3) := ‘ÜÇBİN’;
p_binler (4) := ‘DÖRTBİN’;
p_binler (5) := ‘BEŞBİN’;
p_binler (6) := ‘ALTIBİN’;
p_binler (7) := ‘YEDİBİN’;
p_binler (8) := ‘SEKİZBİN’;
p_binler (9) := ‘DOKUZBİN’;
p_milyon (0) := ‘MİLYON’;
p_milyon (1) := ‘BİRMİLYON’;
p_milyon (2) := ‘İKİMİLYON’;
p_milyon (3) := ‘ÜÇMİLYON’;
p_milyon (4) := ‘DÖRTMİLYON’;
p_milyon (5) := ‘BEŞMİLYON’;
p_milyon (6) := ‘ALTIMİLYON’;
p_milyon (7) := ‘YEDİMİLYON’;
p_milyon (8) := ‘SEKİZMİLYON’;
p_milyon (9) := ‘DOKUZMİLYON’;
p_milyar (0) := ‘MİLYAR’;
p_milyar (1) := ‘BİRMİLYAR’;
p_milyar (2) := ‘İKİMİLYAR’;
p_milyar (3) := ‘ÜÇMİLYAR’;
p_milyar (4) := ‘DÖRTMİLYAR’;
p_milyar (5) := ‘BEŞMİLYAR’;
p_milyar (6) := ‘ALTIMİLYAR’;
p_milyar (7) := ‘YEDİMİLYAR’;
p_milyar (8) := ‘SEKİZMİLYAR’;
p_milyar (9) := ‘DOKUZMİLYAR’;
p_trilyon (0) := ‘TRİLYON’;
p_trilyon (1) := ‘BİRTRİLYON’;
p_trilyon (2) := ‘İKİTRİLYON’;
p_trilyon (3) := ‘ÜÇTRİLYON’;
p_trilyon (4) := ‘DÖRTTRİLYON’;
p_trilyon (5) := ‘BEŞTRİLYON’;
p_trilyon (6) := ‘ALTITRİLYON’;
p_trilyon (7) := ‘YEDİTRİLYON’;
p_trilyon (8) := ‘SEKİZTRİLYON’;
p_trilyon (9) := ‘DOKUZTRİLYON’;
p_trilyar (0) := ‘TRİLYAR’;
p_trilyar (1) := ‘BİRTRİLYAR’;
p_trilyar (2) := ‘İKİTRİLYAR’;
p_trilyar (3) := ‘ÜÇTRİLYAR’;
p_trilyar (4) := ‘DÖRTTRİLYAR’;
p_trilyar (5) := ‘BEŞTRİLYAR’;
p_trilyar (6) := ‘ALTITRİLYAR’;
p_trilyar (7) := ‘YEDİTRİLYAR’;
p_trilyar (8) := ‘SEKİZTRİLYAR’;
p_trilyar (9) := ‘DOKUZTRİLYAR’;
p_katrilyon (0) := ‘KATRİLYON’;
p_katrilyon (1) := ‘BİRKATRİLYON’;
p_katrilyon (2) := ‘İKİKATRİLYON’;
p_katrilyon (3) := ‘ÜÇKATRİLYON’;
p_katrilyon (4) := ‘DÖRTKATRİLYON’;
p_katrilyon (5) := ‘BEŞKATRİLYON’;
p_katrilyon (6) := ‘ALTIKATRİLYON’;
p_katrilyon (7) := ‘YEDİKATRİLYON’;
p_katrilyon (8) := ‘SEKİZKATRİLYON’;
p_katrilyon (9) := ‘DOKUZKATRİLYON’;
p_katrilyar (0) := ‘KATRİLYAR’;
p_katrilyar (1) := ‘BİRKATRİLYAR’;
p_katrilyar (2) := ‘İKİKATRİLYAR’;
p_katrilyar (3) := ‘ÜÇKATRİLYAR’;
p_katrilyar (4) := ‘DÖRTKATRİLYAR’;
p_katrilyar (5) := ‘BEŞKATRİLYAR’;
p_katrilyar (6) := ‘ALTIKATRİLYAR’;
p_katrilyar (7) := ‘YEDİKATRİLYAR’;
p_katrilyar (8) := ‘SEKİZKATRİLYAR’;
p_katrilyar (9) := ‘DOKUZKATRİLYAR’;
p_ondalık (0) := p_birler;
p_ondalık (1) := p_onlar;
p_ondalık (2) := p_yuzler;
p_ondalık (3) := p_binler;
p_ondalık (4) := p_onlar;
p_ondalık (5) := p_yuzler;
p_ondalık (6) := p_milyon;
p_ondalık (7) := p_onlar;
p_ondalık (8) := p_yuzler;
p_ondalık (9) := p_milyar;
p_ondalık (10) := p_onlar;
p_ondalık (11) := p_yuzler;
p_ondalık (12) := p_trilyon;
p_ondalık (13) := p_onlar;
p_ondalık (14) := p_yuzler;
p_ondalık (15) := p_trilyar;
p_ondalık (16) := p_onlar;
p_ondalık (17) := p_yuzler;
p_ondalık (18) := p_katrilyon;
p_ondalık (19) := p_onlar;
p_ondalık (20) := p_yuzler;
p_ondalık (21) := p_katrilyar;
p_ondalık (22) := p_onlar;
p_ondalık (23) := p_yuzler;
l_virgulden_once := TRUNC (p_sayi);
IF l_virgulden_once <> p_sayi
THEN
l_virgulden_sonra := POWER (10, LENGTH (p_sayi – l_virgulden_once)-1) * (p_sayi – l_virgulden_once);
l_sonra_bas_say := LENGTH (l_virgulden_sonra);
ELSE
l_virgulden_sonra := 0;
l_sonra_bas_say := 0;
END IF;
l_once_bas_say := LENGTH (l_virgulden_once);
l_index_fark := MOD (l_once_bas_say, 3);
IF l_once_bas_say = 4 AND SUBSTR (l_virgulden_once, 1, 1) = 1
THEN
p_ondalık (3) (1) := ‘BİN’;
END IF;
FOR i IN 1 .. l_once_bas_say
LOOP
l_index := SUBSTR (l_virgulden_once, i, 1);
IF i BETWEEN l_index_fark + 1 AND l_once_bas_say
THEN
l_mod3 := l_mod3 + 1;
IF l_index = 0
THEN
l_zero := l_zero + 1;
END IF;
IF l_mod3 = 3
THEN
IF l_zero = 3
THEN
p_ondalik (l_once_bas_say – i) (l_index) := NULL;
ELSIF l_zero = 2
THEN
IF l_index = 1 AND l_once_bas_say = 4
THEN
p_ondalik (l_once_bas_say – i) (l_index) := ‘BİN’;
END IF;
END IF;
l_zero := 0;
l_mod3 := 0;
END IF;
END IF;
l_virgul_o_yaziyla := l_virgul_o_yaziyla || p_ondalik (l_once_bas_say – i) (l_index);
END LOOP;
IF l_sonra_bas_say <> 0
THEN
l_mod3 := 0;
l_zero := 0;
IF l_sonra_bas_say = 4 AND SUBSTR (l_virgulden_sonra, 1, 1) = 1
THEN
p_ondalık (3) (1) := ‘BİN’;
END IF;
l_index_fark := MOD (l_sonra_bas_say, 3);
FOR i IN 1 .. l_sonra_bas_say
LOOP
l_index := SUBSTR (l_virgulden_sonra, i, 1);
IF i BETWEEN l_index_fark + 1 AND l_sonra_bas_say
THEN
l_mod3 := l_mod3 + 1;
IF l_index = 0
THEN
l_zero := l_zero + 1;
END IF;
IF l_mod3 = 3
THEN
IF l_zero = 3
THEN
p_ondalik (l_sonra_bas_say – i) (l_index) := NULL;
ELSIF l_zero = 2
THEN
IF l_index = 1 AND l_sonra_bas_say = 4
THEN
p_ondalik (l_sonra_bas_say – i) (l_index) := ‘BİN’;
END IF;
END IF;
l_zero := 0;
l_mod3 := 0;
END IF;
END IF;
l_virgul_s_yaziyla := l_virgul_s_yaziyla || p_ondalik (l_sonra_bas_say – i) (l_index);
END LOOP;
END IF;
IF p_ozel = ‘Y’
THEN
l_dies := ‘ ‘;
l_yalniz:=”;
END IF;
IF p_currency = ‘TRL’
THEN
l_sonuc := l_yalniz || l_dies || NVL (l_virgul_o_yaziyla, ‘ SIFIR ‘) || l_dies || ‘TL.. ‘ || l_dies || NVL (l_virgul_s_yaziyla, ‘SIFIR’) || l_dies || ‘KRS. dur’;
ELSIF p_currency = ‘USD’
THEN
l_sonuc := l_yalniz || l_dies || NVL (l_virgul_o_yaziyla, ‘ SIFIR ‘) || l_dies || ‘Dolar. ‘ || l_dies || NVL (l_virgul_s_yaziyla, ‘SIFIR’) || l_dies || ‘ Sent dir’;
ELSIF p_currency = ‘EUR’
THEN
l_sonuc := l_yalniz || l_dies || NVL (l_virgul_o_yaziyla, ‘ SIFIR ‘) || l_dies || ‘Euro.. ‘ || l_dies || NVL (l_virgul_s_yaziyla, ‘SIFIR’) || l_dies || ‘Sent dir’;
ELSIF p_currency = ‘GBP’
THEN
l_sonuc := l_yalniz || l_dies || NVL (l_virgul_o_yaziyla, ‘ SIFIR ‘) || l_dies || ‘Paund. ‘ || l_dies || NVL (l_virgul_s_yaziyla, ‘SIFIR’) || l_dies || ‘Peni dir’;
ELSIF p_currency = ‘JPY’
THEN
l_sonuc := l_yalniz || l_dies || NVL (l_virgul_o_yaziyla, ‘ SIFIR ‘) || l_dies || ‘Japon Yen i dir’;
ELSIF p_currency = ‘CHF’
THEN
l_sonuc := l_yalniz || l_dies || NVL (l_virgul_o_yaziyla, ‘ SIFIR ‘) || l_dies || ‘İsviçre Frangı. ‘ || l_dies || NVL (l_virgul_s_yaziyla, ‘SIFIR’) || l_dies || ‘Sent dir’;
END IF;
RETURN l_sonuc;
EXCEPTION
WHEN OTHERS
THEN
RAISE_APPLICATION_ERROR(-20001,P_SAYI||SQLERRM);
RETURN NULL;
END xxtt_para_yaziyla;
/
Mustafa Yılmaz
Oldu.
4 yıldan fazla bir zamandır Yazılım,3 yıldır Oracle E-Business Suite Uygulama Yazılımı
üzerinde Teknik Danışman Olarak profesyonel kariyerine devam
etmektedir.
Mail: mustafayilmaz56@gmail.com
Latest posts by Mustafa Yılmaz (see all)
- Trigger’ların Çalışma Sırası - 06 Kasım 2015
- AR-GL interface alanlarının ilişkisi - 05 Mayıs 2015
- FND_PROFILE Kullanımı - 05 Mayıs 2015