- нравится:

у сценарий SQL в Firebird для назначения. Во-первых, мне нужно создать таблицу из 2 столбцов и добавить некоторые значения (значения не должны ничего делать)

--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;

После того, как это работает, я создаю процедуру. Предполагается вернуть определенную строку на основе числа, переданного в нее.

--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);

Вызов функции дает мне

LV
null
null
null
ELITE

Но это должно дать мне

LV
LOW
MID
HIGH
ELITE

Если бы кто-то мог пролить свет на это, это было бы очень ценно. Последние два дня я потянул за волосы руководство пользователя Firebird.

Ответы на вопрос(1)

Ваш ответ на вопрос