Я не совсем понимаю это правильно ... моя функция выглядит так:
create or replace function myfunc(integer, varchar(25), varchar(25), integer, integer) returns numeric as $$
declare var_return numeric;
begin
select sum(a+ b) / sum(a + b + c)
from mytable
where col1 = $1
and col2 = $2
and col3 = $3
and col4 between $4 AND $5
into var_return;
exception when division_by_zero then return 0.0;
return coalesce(var_return, 0.0);
end;
$$ language plpgsql;
Но когда я делаю select myfunc(123, 'foo', 'bar', 1, 10);
я вижу:
ERROR: control reached end of function without RETURN
CONTEXT: PL/pgSQL function "myfunc"
Почему это происходит?Ясно, что я хочу поймать, когда оператор select
встречает случай, когда a + b + c
равен 0 и возвращает 0.