건도록 GDlog

[ORCALE SQL Developer] 함수 생성 및 적용 (create function & how it used) 본문

개발/Database

[ORCALE SQL Developer] 함수 생성 및 적용 (create function & how it used)

GD_dev 2025. 5. 8. 15:13

프로젝트 중에 Crownix 사의 Report Designer 라는 첨보는 이상한 툴을 사용하게 되었다.

뭐 대충 요런 느낌인데

DB연결 후 직접 쿼리를 작성하거나 프로시저 등을 불러와 사용하여 viewer 형식으로 보여주는 툴 이었다.

아무튼 요건 사항 중 계약금액을

위처럼 숫자표기 된 것을 한글표기로 바꿔야 하는게 있어,

숫자-한글 변환 함수를 생성해서 select 해야겠다 생각했다.

근데 항상 프로시저 사용하며 declare 정도로 선언하여 쓰는 정도였어서

함수는 오라클 환경에선 처음 써보았다.


create or replace FUNCTION "CRT_NUM_TO_KOR"
(
    tmp_str IN VARCHAR2
)

RETURN VARCHAR2 AS
    U1       VARCHAR2(27) := '일이삼사오육칠팔구';
    U2       VARCHAR2(100) := ' 십백천만십백천억십백천조십백천경십백천';
    RESULT   VARCHAR2(256) := '';
    NUM      INTEGER;
    ZERO_CNT INTEGER := 0;

BEGIN

    IF tmp_str IS NULL THEN
        RESULT := NULL;
    ELSE
        FOR i IN REVERSE 1 .. LENGTH(tmp_str)
        LOOP
            NUM := TO_NUMBER(SUBSTR(tmp_str,LENGTH(tmp_str)-i+1,1));
            IF NUM > 0 THEN
                RESULT := RESULT||SUBSTR(U1,NUM,1)||SUBSTR(U2,i,1);
                ZERO_CNT := 0;
            ELSE
                ZERO_CNT := ZERO_CNT + 1;
                IF i IN (17,13,9,5) AND ZERO_CNT < 4 THEN
                 RESULT := RESULT||SUBSTR(U2,i,1);
                END IF;
            END IF;
            END LOOP;
    END IF;
    RETURN TRIM(RESULT);

END;

 

함수를 create or replace function으로 콘솔창에서 만들어주고,

옆에 sql developer 메뉴에 함수 폴더에 잘 들어간 걸 확인.

그 다음 함수를 사용할 곳에서 ( 나는 패키지 폴더의 package body 부분에서)

위와 같이 함수 먹여서 잘 조회 되는지 확인.

그럼 NUM_TO_KOR ( 20,000 ).

'개발 > Database' 카테고리의 다른 글

SQL 과 noSQL 차이  (0) 2022.06.10