2012-09-25 5 views
0

나는 exp 숫자를 찾아야하는 쿼리를 가지고있다. 경우에 따라 exp이 너무 커서 오버플로 오류를 반환하거나 어떤 경우에는 exp 함수의 인수가 너무 큽니다. 이러한 경우 나는 어떤 임의의 가치를 되돌려 줄 필요가있다. (작동하지 않습니다)포스트 그레스의 예외 처리

예 여기

select LEAST(exp(1000), 1::double precision); 

, 나는 exp(1000)을 찾기 위해 시도합니다. 너무 큰 경우 1을 반환합니다.

어떻게하면 Postgres에서이 작업을 수행 할 수 있습니까? 이 같은

답변

0

뭔가 :

create or replace function safe_exp(val double precision) 
    returns double precision 
    language plpgsql 
as 
$body$ 
declare 
    result double precision; 
begin 
    begin 
    result := exp(val); 
    exception 
    when others then 
     result := 1.0; 
    end; 
    return result; 
end; 
$body$ 

그러나 때문에 이것은 "일반적인"exp() 전화보다 느리게 될 것입니다 예외 블록에

.