dbms_xmlgen.getxmltype에서 제수가 0 일경우 처리문제 0 2 1,301

by 김재한 [2016.12.27 22:37:50]


아래표처럼 계산식이 데이터로 들어 있습니다.

column
25 / (( 0 + 0 + 0) /12 ) + 100
25 / 0 * 30/ 50


dbms_xmlgen.getxmltype 사용하여 수식의 값을 계산했었는데
위의경우처럼 제수가 0인경우가 문제가 되네요.

ORA-01476 제수가 0 입니다

위와같은 에러를 토해내면서 계산식을 실행하지 못하는데
이런경우는 어떤식으로 처리해야 하는건지 문의를 드립니다. 
결과값이 0으로 나와도 상관은 없거든요..

고수님들의 고견을 여쭙니다. 

 


* 계산수식은 다음처럼 구했습니다.
dbms_xmlgen.getxmltype
 ( 'SELECT ' || 컬럼 || ' FROM DUAL' ).extract('//text()') )

 

 

 

 

by jkson [2016.12.28 08:01:53]

그냥 function 만들어서 쓰시는 게 나을듯합니다.

create function fc_calc(in_exp varchar2)
return number
is
v_rtn number;
begin
    execute immediate 'select ' || in_exp || ' from dual' into v_rtn;
    return v_rtn;
exception
    when others then
        return 0;
end;        

select fc_calc('25 / (( 0 + 0 + 1) /12 ) + 100') from dual
union all
select fc_calc('25 / (( 0 + 0 + 0) /12 ) + 100') from dual

 


by 우리집아찌 [2016.12.28 08:06:37]
WITH T ( a , b ) AS (
SELECT 0 , 0 FROM DUAL UNION ALL
SELECT 0 , 1 FROM DUAL UNION ALL
SELECT 1 , 0 FROM DUAL UNION ALL
SELECT 1 , 1 FROM DUAL
)
SELECT NVL( a / NULLIF(b,0) , 0 ) FROM T
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입