본문 바로가기
Database/Oracle

Oracle 올림(절상) 처리(RoundUp) 함수

by kinorama 2018. 6. 27.

오라클에서 일반적인 정수 올림 처리함수는 CEIL을 사용한다.

그렇다면 소수 자릿수의 올림 처리함수는 다음의 함수를 구현하여 사용한다.

 

create or replace function FN_ROUNDUP (in_left  in  number,
                                       in_right in  integer default 0)
  return number is

  v_right                  integer;
  v_temp_num               number;
  v_add_num                number;
  v_rlt                    number;
begin
  /*
  사용처 : 공통
  제  목 : 입력 값의 올림 처리
  내  용 : 소수 자릿수에 의한 입력 값의 올림 처리 함수
  ------------------------------------------------------------
  인자명 : 설명(인자값 예)
  in_left     : 원본 값
  in_right    : 올림 처리할 소수 자릿수

  반환값       : 올림 처리 값
  ------------------------------------------------------------
  변경날짜     변경자   변경사유
  2018-06-27   박현준   1. 초기작성
  */
 
  if in_right is null then
     v_right := 0;
  else
     v_right := in_right;
  end if;
 
  if v_right = 0 then
   
     v_rlt := ceil(in_left);
 
  else
 
     if instr(in_left, '.') = 0 then
        v_temp_num := 0;
     else
        v_temp_num := in_left - to_number(substr(in_left, 0, instr(in_left, '.') + v_right));
     end if;

     if v_temp_num = 0 then
        v_rlt := in_left;
     else
        v_add_num := 1/power(10, v_right);        
        v_rlt := to_number(substr(in_left, 0, instr(in_left, '.') + v_right)) + v_add_num;
     end if;
 
  end if;
   
  return(v_rlt);

exception
  when others then 
       return 0;
       -- Application 반환 에러
       --raise_application_error(-20001, dbms_utility.format_error_stack || sqlerrm);
end FN_ROUNDUP;

 

 

'Database > Oracle' 카테고리의 다른 글

효과적인 Top-N & Pagination Query  (0) 2011.07.19

댓글