create or replace Function ft_readtbaht(ai_amount IN NUMBER ) RETURN VARCHAR2 IS ls_ans1 varchar2(200); ls_money1 varchar2(200); ls_money2 varchar2(200); ls_money3 varchar2(200); ls_pre varchar2(100); ls_moneystr varchar2(100); ls_curr_name varchar2(10); ls_curr_sub_name varchar2(10); li_amount number; li_strlength number; li_counter1 number; li_stang number; ls_decimal varchar2(200); BEGIN li_amount := trunc( ai_amount , 2 ); if (ls_curr_name is null) or (ls_curr_name = '') then ls_curr_name := 'บาท'; end if; if (ls_curr_sub_name is null) or (ls_curr_sub_name = '') then ls_curr_sub_name := 'สตางค์'; end if; li_strlength := NVL(Length(to_char(li_amount)), 0); if substr(to_char(li_amount),li_strlength-1,1) = '.' then ls_money1 := to_char(li_amount)||'0'; else ls_money1 := to_char(li_amount); end if; li_counter1 := 1; ls_ans1 := ''; li_stang := 0; loop exit when NVL(length(ls_money1), 0) = 0; li_strlength := NVL(Length(ls_money1), 0); ls_money2 := substr(ls_money1,li_strlength,1); if li_strlength <> 1 Then ls_money3 := substr(ls_money1,li_strlength - 1,1); end If; if ls_money2 = '0' then ls_moneystr := ''; else if ls_money2 = '1' then ls_moneystr := 'หนึ่ง'; if li_counter1 = 1 then If ls_money3 <> '0' And li_strlength > 1 Then --If li_strlength > 1 Then ls_moneystr := 'เอ็ด'; End If; else if li_counter1 = 2 then ls_moneystr := ''; end if; end if; else if ls_money2 = '2' then If li_counter1 = 2 Then ls_moneystr := 'ยี่'; Else ls_moneystr := 'สอง'; End If; else if ls_money2 = '3' then ls_moneystr := 'สาม'; else if ls_money2 = '4' then ls_moneystr := 'สี่'; else if ls_money2 = '5' then ls_moneystr := 'ห้า'; else if ls_money2 = '6' then ls_moneystr := 'หก'; else if ls_money2 = '7' then ls_moneystr := 'เจ็ด'; else if ls_money2 = '8' then ls_moneystr := 'แปด'; else if ls_money2 = '9' then ls_moneystr := 'เก้า'; else ls_moneystr := ''; end if; end if; end if; end if; end if; end if; end if; end if; end if; end if; ls_pre := ''; if li_counter1 = 1 then ls_pre := ''; else if li_counter1 = 2 then If ls_money2 <> '0' Then ls_pre := 'สิบ'; End If; else if li_counter1 = 3 then If ls_money2 <> '0' And ls_money2 <> '.' Then ls_pre := 'ร้อย'; End If; else if li_counter1 = 4 then If ls_money2 <> '0' Then ls_pre := 'พัน'; End If; else if li_counter1 = 5 then If ls_money2 <> '0' Then ls_pre := 'หมื่น'; End If; else if li_counter1 = 6 then If ls_money2 <> '0' Then ls_pre := 'แสน'; End If; end if; end if; end if; end if; end if; end if; ls_money1 := substr(ls_money1,1,li_strlength - 1); ls_ans1 := ls_moneystr||ls_pre||ls_ans1; If li_counter1 = 6 Then li_counter1 := 1; If li_strlength >1 Then ls_ans1 := 'ล้าน'||ls_ans1; End If; Else If ls_money2 = '.' Then li_stang := 1; li_counter1 := 1; ls_decimal := ls_ans1; If ls_ans1 <> '' Then If li_strlength > 2 Then ls_ans1 := ltrim(ls_curr_name)||ls_ans1||ltrim(ls_curr_sub_name); Else If li_strlength = 2 Then If ls_money3 <> '0' Then ls_ans1 := ltrim(ls_curr_name)||ls_ans1||ltrim(ls_curr_sub_name); Else ls_ans1 := ls_ans1||ltrim(ls_curr_sub_name); End If; Else ls_ans1 := ls_ans1||ltrim(ls_curr_sub_name); End If; End If; Else ls_ans1 := ltrim(ls_curr_name)||ls_decimal||ltrim(ls_curr_sub_name); --ls_ans1 := ltrim(ls_curr_name)||ls_decimal||ltrim(ls_curr_sub_name); End If; Else li_counter1 := li_counter1 +1; End If; End If; end Loop; if li_stang = 0 then RETURN(ls_ans1||ltrim(ls_curr_name)||'ถ้วน'); else if substr( ls_ans1 , 0 , 3 ) = 'บาท' then ls_ans1 := replace( ls_ans1 , 'บาท' , '' ); end if; RETURN(ls_ans1); end if; End ; /