Aşağıdaki PL/SQL örneğini hem oracle ile dizilere örnek olması için hemde bazı durumlarda lazım olabileceği için yayınlıyorum.
Kullanımı: SELECT YaziIleSayi(958454) FROM dual YAZIILESAYI(958454) -------------------------------------------------------------------------------- DokuzYüzElliSekizBinDörtYüzElliDört 1 row selected.
CREATE OR REPLACE FUNCTION YaziIleSayi (pNumber NUMBER) RETURN VARCHAR AS TYPE sayilist_type IS TABLE OF VARCHAR (100) INDEX BY BINARY_INTEGER; arySayilar sayilist_type; aryBasamaklar sayilist_type; aryOnlar sayilist_type; sNumber VARCHAR (30); sUchane VARCHAR (3); result VARCHAR (400); i NUMBER; basamak NUMBER; yuzu NUMBER; onu NUMBER; biri NUMBER; BEGIN arySayilar (0) := ''; arySayilar (1) := 'Bir'; arySayilar (2) := 'İki'; arySayilar (3) := 'Üç'; arySayilar (4) := 'Dört'; arySayilar (5) := 'Beş'; arySayilar (6) := 'Altı'; arySayilar (7) := 'Yedi'; arySayilar (8) := 'Sekiz'; arySayilar (9) := 'Dokuz'; aryBasamaklar (0) := ''; aryBasamaklar (1) := 'Trilyon'; aryBasamaklar (2) := 'Milyar'; aryBasamaklar (3) := 'Milyon'; aryBasamaklar (4) := 'Bin'; aryOnlar (0) := ''; aryOnlar (1) := 'On'; aryOnlar (2) := 'Yirmi'; aryOnlar (3) := 'Otuz'; aryOnlar (4) := 'Kırk'; aryOnlar (5) := 'Elli'; aryOnlar (6) := 'Altmış'; aryOnlar (7) := 'Yetmiş'; aryOnlar (8) := 'Seksen'; aryOnlar (9) := 'Doksan'; sNumber := LPAD (pNumber, 15, '0'); i := -2; basamak := 0; result := ''; WHILE i <= 12 LOOP i := i + 3; suchane := SUBSTR (sNumber, i, 3); basamak := basamak + 1; IF suchane = '000' THEN CONTINUE; END IF; yuzu := TO_NUMBER (SUBSTR (suchane, 1, 1)); onu := TO_NUMBER (SUBSTR (sUchane, 2, 1)); biri := TO_NUMBER (SUBSTR (sUchane, 3, 1)); IF (basamak = 4) AND (sUchane = '001') THEN yuzu := 0; onu := 0; biri := 0; END IF; IF yuzu <> 1 THEN result := result || arySayilar (yuzu); END IF; IF yuzu <> 0 THEN result := result || 'Yüz'; END IF; result := result || aryOnlar (onu) || arySayilar (biri); IF (i <= 12) AND (sUchane <> '000') THEN result := result || aryBasamaklar (basamak); END IF; END LOOP; RETURN result; END;
RSS feed for comments on this post. TrackBack URL
Teşekkürler ellerinize sağlık. pl/sql örneklerinin devamını bekliyoruz.
Güzel çalışma, başlangıç düzeyinde hem fonksiyon için kaynak hemde işe yarar bir fonksiyon olmuş
WHILE i <= 12
HATA VERIYOR
HTML dönüşümü sırasında bazı hatalar olmuş bunları düzenleyip tekrar atacağım.