21 lines
538 B
SQL
21 lines
538 B
SQL
create or replace function fnu_fibonacci(p_num integer) return integer is
|
|
f integer;
|
|
p integer;
|
|
q integer;
|
|
begin
|
|
case when p_num < 0 or p_num != trunc(p_num)
|
|
then raise_application_error(-20001, 'Invalid input: ' || p_num, true);
|
|
when p_num in (0, 1) then f := p_num;
|
|
else
|
|
p := 0;
|
|
q := 1;
|
|
for i in 2 .. p_num loop
|
|
f := p + q;
|
|
p := q;
|
|
q := f;
|
|
end loop;
|
|
end case;
|
|
return(f);
|
|
end fnu_fibonacci;
|
|
/
|