SQL> SELECT RF_한글금액(100100)||' 원' 금액
FROM DUAL;
금액
--------------------------------------------
일십만일백 원
Create or replace Function rf_hangulamt (arg_금액 Number) RETURN Varchar2 IS
n_숫자길이 Number(2);
n_숫자위치 Number(2);
v_숫자문자 Varchar2(20);
v_자리수 Varchar2(1);
v_존재여부 Varchar2(1);
v_한글금액 Varchar2(100);
Begin
If arg_금액 Is NULL Then
Return (NULL);
ElsIf arg_금액 = 0 Then
Return ('영');
ElsIf arg_금액 < 0 Then
v_한글금액 := '-';
End If;
v_숫자문자 := To_Char (Abs (arg_금액));
n_숫자길이 := Lengthb (v_숫자문자);
For i In 1..n_숫자길이 Loop
v_자리수 := Substrb (v_숫자문자, i, 1);
If v_자리수 = '0' Then
v_한글금액 := v_한글금액 || '';
Else
If v_자리수 = '1' Then
v_한글금액 := v_한글금액 || '일';
ElsIf v_자리수 = '2' Then
v_한글금액 := v_한글금액 || '이';
ElsIf v_자리수 = '3' Then
v_한글금액 := v_한글금액 || '삼';
ElsIf v_자리수 = '4' Then
v_한글금액 := v_한글금액 || '사';
ElsIf v_자리수 = '5' Then
v_한글금액 := v_한글금액 || '오';
ElsIf v_자리수 = '6' Then
v_한글금액 := v_한글금액 || '육';
ElsIf v_자리수 = '7' Then
v_한글금액 := v_한글금액 || '칠';
ElsIf v_자리수 = '8' Then
v_한글금액 := v_한글금액 || '팔';
ElsIf v_자리수 = '9' Then
v_한글금액 := v_한글금액 || '구';
End If;
v_존재여부 := '1';
End If;
n_숫자위치 := n_숫자길이 + 1 - i;
If n_숫자위치 = 1 Then
v_한글금액 := v_한글금액 || '';
ElsIf n_숫자위치 = 5 Then
If v_존재여부 = '1' Then
v_한글금액 := v_한글금액 || '만';
End If;
ElsIf n_숫자위치 = 9 Then
If v_존재여부 = '1' Then
v_한글금액 := v_한글금액 || '억';
End If;
ElsIf n_숫자위치 = 13 Then
If v_존재여부 = '1' Then
v_한글금액 := v_한글금액 || '조';
End If;
ElsIf n_숫자위치 = 17 Then
If v_존재여부 = '1' Then
v_한글금액 := v_한글금액 || '경';
End If;
Else
If v_자리수 <> 0 Then
If Mod (n_숫자위치, 4) = 0 Then
v_한글금액 := v_한글금액 || '천';
ElsIf Mod (n_숫자위치, 4) = 1 Then
v_한글금액 := v_한글금액 || '';
ElsIf Mod (n_숫자위치, 4) = 2 Then
v_한글금액 := v_한글금액 || '십';
ElsIf Mod (n_숫자위치, 4) = 3 Then
v_한글금액 := v_한글금액 || '백';
End If;
End If;
End If;
-- 일경조억만 이라는 금액이 찍히지 않도록...
If n_숫자위치 In (1, 5, 9, 13, 17) Then
v_존재여부 := NULL;
End If;
End Loop;
Return (Substr(v_한글금액,1,100));
End;
[출처] 숫자금액을 한글로 바꿔주는 함수 |작성자 현지기