En Firebird, ¿cómo escribo múltiples declaraciones if en un procedimiento?

Estoy escribiendo un script sql en Firebird para una tarea. Primero, tengo que crear una tabla de 2 columnas y agregar algunos valores (se supone que los valores todavía no hacen nada)

--Create the table
create table salary_class (
class varchar(5),
occurrence int ) ;

commit work;

--Add Values to our table
insert into salary_class (class, occurrence)
values ('ELITE', 0);
insert into salary_class (class, occurrence)
values ('HIGH', 0);
insert into salary_class (class, occurrence)
values ('MID', 0);
insert into salary_class (class, occurrence)
values ('LOW', 0);

commit work;

Después de que el trabajo se ha comprometido, creo un procedimiento. Se supone que devuelve una determinada cadena en función del número que se le pasa.

--Create f_class procedure
set term # ;
create procedure f_class(salary SALARY)

returns (lv VARCHAR(10)) as
begin
    --If statements for each occurrence level
    if (salary <= 39999) then
    lv = 'LOW';
    suspend;

    if (salary <= 67999) then
    lv = 'MID';
    suspend;

    if (salary <= 99999) then
    lv = 'HIGH';
    suspend;

    if (salary >= 100000) then
    lv = 'ELITE';
    suspend;

end#

set term ; #

--Demonstrate that f_class function works correctly
  select lv from f_class(20000);
  select lv from f_class(67999);
  select lv from f_class(68000);
  select lv from f_class(120000);

Llamar a la función me da

LV
null
null
null
ELITE

Pero se supone que me da

LV
LOW
MID
HIGH
ELITE

Si alguien pudiera arrojar algo de luz sobre esto, sería muy apreciado. He estado tirando de mi cabello sobre el manual de Firebird los últimos 2 días.

Respuestas a la pregunta(1)

Su respuesta a la pregunta