오라클에서 일반적인 정수 올림 처리함수는 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 |
---|
댓글