sql stored函数给出错误

时间:2016-11-07 15:42:22

标签: sql error-handling firebird firebird-3.0

我正在尝试创建一个存储函数来获取一个名为budget的参数。该函数应返回字符串' LOW'预算小于或等于500000,' MID'预算小于或等于850000,' HIGH'对于小于或等于1200000的预算,以及' ULTRA'对于超过120万的预算。但我收到的错误对我来说没有多大意义。

这是我的功能:

set term # ;

create procedure f_rating(budget int) 
as
begin
if (budget <= 500000) then
    return ('LOW');
else if (budget <= 850000) then
    return ('MID');
else if (budget <= 1200000) then
    return ('HIGH');
else 
    return ('ULTRA');
end #

我还是sql的新手,所以这个语法基于在线等例子。这是我的错误:

SQL Message : -804
An error was found in the application program input parameters for the SQL statement.

Engine Code    : 335544569
Engine Message :
Dynamic SQL Error
SQL error code = -804
Function unknown
RETURN

任何人都可以帮我弄清楚这意味着什么吗?

2 个答案:

答案 0 :(得分:1)

syntax for stored function

{CREATE [OR ALTER] | ALTER | RECREATE} FUNCTION <name>
[(param1 [, ...])]
RETURNS <type>
AS
BEGIN
    ...
END

因此您犯了两个错误 - 您使用的是procedure而不是function而您错过了RETURNS <type>部分。尝试

create function f_rating(budget int) RETURNS VARCHAR(5)
as
begin
if (budget <= 500000) then
    return 'LOW';
else if (budget <= 850000) then
    return 'MID';
else if (budget <= 1200000) then
    return 'HIGH';
else 
    return 'ULTRA';
end #

答案 1 :(得分:0)

过程不返回任何值,函数可以。

尝试:

create function f_rating(budget int) 
as

而不是

create procedure f_rating(budget int) 
as