这是导致错误的函数
set term # ;
create function f_class (salary int)
returns varchar(5);
as
declare klass varchar(5);
BEGIN
IF salary < 40000
THEN SET klass = 'LOW';
else if salary < 68000 and salary > 39999
then set klass = 'MID';
else if salary < 100000 and salary > 67999
then set klass = 'HIGH';
else if salary > 100000
then set klass = 'ELITE';
end if;
return klass;
END#
set term ; #
我的功能
我收到此错误Message: isc_dsql_prepare failed
SQL Message : -104
Invalid token
Engine Code : 335544569
Engine Message :
Dynamic SQL Error
SQL error code = -104
Token unknown - line 2, column 8
function
我不知道为什么。
答案 0 :(得分:0)
Firebird 3中引入了create function
功能。您获得的错误意味着您使用的是Firebird 2.5或更早版本。如果您想使用create function
,则需要升级到Firebird 3。
正如我昨天评论的那样,您的代码中还有其他一些语法错误:
set
修改变量,您需要使用不带set
的作业。 答案 1 :(得分:0)
应该这样写。
set term # ;
create function f_class1 (salary integer)
returns varchar(5)
as
declare klass varchar(5);
BEGIN
IF (salary < 40000) then
klass = 'LOW';
else if ((salary < 68000) and (salary > 39999)) then
klass = 'MID';
else if ((salary < 100000) and (salary > 67999)) then
klass = 'HIGH';
else if (salary > 100000) then
klass = 'ELITE';
return klass;
END#
set term ; #