如何将过程的返回值分配给Firebird中的新变量?

时间:2016-11-10 16:11:15

标签: sql stored-procedures triggers firebird

这是我打电话的程序:

com.google.inject.Inject

我在触发器中调用它:

set term # ;
create procedure f_rating(budget int)
 returns (final_result varchar(5))
as
begin
 if (budget <= 500000) then final_result = 'LOW';
 else if (budget <= 850000) then final_result = 'MID';
 else if (budget <= 1200000) then final_result = 'HIGH';
 else if (budget > 1200000) then final_result = 'ULTRA';
end #
commit work #

我很确定这可能是一个愚蠢的语法错误,但我无法弄清楚。

1 个答案:

答案 0 :(得分:1)

f_rating不是可选择的存储过程(它没有SUSPEND)所以调用它的语法是EXECUTE PROCEDURE <name> RETURNING_VALUES(<params>);,即

set term # ;
CREATE TRIGGER tr_department_rating_insert for department_tester after insert
as
begin
 EXECUTE PROCEDURE f_rating(NEW.budget) RETURNING_VALUES(:temp_rating); 
 update department_rating
    set occurrences = occurrences + 1
    where rating = temp_rating;
end # 
commit work #