|
แปลงค่าจากตัวเลขเป็นตัวหนังสือภาษาไทย
CREATE OR REPLACE FUNCTION AMOUNT2TEXTTHAI (cf_sum_all in number) return varchar2 is begin declare 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_strlength number; li_counter1 number; li_stang number; ls_decimal varchar2(200);
BEGIN 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(cf_sum_all)), 0); if substr(to_char(cf_sum_all),li_strlength-1,1) = '.' then ls_money1 := to_char(cf_sum_all)||'0'; else ls_money1 := to_char(cf_sum_all); 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 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); 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)||'ถ้วน'||')'); elsif li_stang>=1000 then RETURN('('||substr(ls_ans1,1,990)||')'); else return('('||ls_ans1||')'); end if;
end; RETURN NULL; END;
Create Date : 09 เมษายน 2550 |
Last Update : 9 เมษายน 2550 15:15:08 น. |
|
0 comments
|
Counter : 268 Pageviews. |
|
|
|
| |
|
|