-- 아래는 숫자를 한글로만 Return하는 함수입니다.
-- =============================================================================
CREATE OR REPLACE FUNCTION F_Pernum(AMT VARCHAR2) RETURN VARCHAR2 IS
V_RETURN_VALUE VARCHAR2(2);
BEGIN
IF AMT='1' THEN
V_RETURN_VALUE := '일';
END IF;
IF AMT='2' THEN
V_RETURN_VALUE := '이';
END IF;
IF AMT='3' THEN
V_RETURN_VALUE := '삼';
END IF;
IF AMT='4' THEN
V_RETURN_VALUE := '사';
END IF;
IF AMT='5' THEN
V_RETURN_VALUE := '오';
END IF;
IF AMT='6' THEN
V_RETURN_VALUE := '육';
END IF;
IF AMT='7' THEN
V_RETURN_VALUE := '칠';
END IF;
IF AMT='8' THEN
V_RETURN_VALUE := '팔';
END IF;
IF AMT='9' THEN
V_RETURN_VALUE := '구';
END IF;
IF AMT='0' THEN
V_RETURN_VALUE := '0';
END IF;
RETURN V_RETURN_VALUE;
END;
/
-- =============================================================================
2.t실제 아래함수를 호출하면 숫자를 한글로 리턴해줍니다.
-- =============================================================================
CREATE OR REPLACE FUNCTION F_Numtokor( amt NUMBER) RETURN VARCHAR2 IS
V_RETURN_VALUE VARCHAR2(100);
V_CHARAMT VARCHAR2(16);
TYPE arr_varchar2 IS TABLE OF VARCHAR2(4) INDEX BY BINARY_INTEGER;
v_Danwi arr_varchar2;
V_TMP VARCHAR2(10);
v_row NUMBER;
v_cnt NUMBER;
BEGIN
v_Danwi(1) := '' ;
v_Danwi(2) := '십';
v_Danwi(3) := '백';
v_Danwi(4) := '천';
v_Danwi(5) := '만';
v_Danwi(6) := '십';
v_Danwi(7) := '백';
v_Danwi(8) := '천';
v_Danwi(9) := '억';
v_Danwi(10) := '십';
v_Danwi(11) := '백';
v_Danwi(12) := '천';
v_Danwi(13) := '조';
v_Danwi(14) := '십';
v_Danwi(15) := '백';
v_Danwi(16) := '천';
V_CHARAMT := TO_CHAR(AMT);
IF SUBSTR(V_CHARAMT, LENGTH(V_CHARAMT) - 7, 4) = '0000' THEN
v_Danwi(5) := '';
END IF;
IF SUBSTR(V_CHARAMT, LENGTH(V_CHARAMT) - 11, 4) = '0000' THEN
v_Danwi(9) := '';
END IF;
FOR V_ROW IN 1..LENGTH(V_CHARAMT) LOOP
BEGIN
V_TMP := F_Pernum(SUBSTR(V_CHARAMT, LENGTH(V_CHARAMT) - V_ROW + 1, 1));
IF V_TMP = '0' THEN
IF V_ROW <> 5 AND V_ROW <> 9 THEN
V_DANWI(V_ROW) := '';
END IF;
V_TMP := '';
END IF;
V_RETURN_VALUE := V_TMP || V_DANWI(V_ROW) || V_RETURN_VALUE;
END;
END LOOP;
V_RETURN_VALUE := V_RETURN_VALUE || '원';
RETURN V_RETURN_VALUE;
END;
/
-- =============================================================================
예)F_Numtokor(30000000) ===> 삼천만원
이상 허접이었습니다... |