CREATE OR REPLACE FUNCTION LIGADJUSTUSER.F_FRM_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;
[출처]
ssiso.net