RosettaCodeData/Task/Fibonacci-sequence/PL-SQL/fibonacci-sequence.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;
/