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.