sql 存储函数出错
sql stored function gives an error
我正在尝试创建一个存储函数来获取一个名为 budget 的参数。该函数应 return 字符串 'LOW' 预算小于或等于 500000,'MID' 预算小于或等于 850000,'HIGH' 预算小于或等于 1200000,'ULTRA' 预算超过 1200000。但我收到一个对我来说意义不大的错误。
这是我的函数:
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
谁能帮我看看这是什么意思?
过程没有 return 任何值,函数有。
尝试:
create function f_rating(budget int)
as
而不是
create procedure f_rating(budget int)
as
CREATE FUNCTION funcname [ ( [ <in_params> ] ) ]
RETURNS <domain_or_non_array_type> [COLLATE collation]
[DETERMINISTIC]
<module-body>
所以你犯了两个错误,你使用 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 #
我正在尝试创建一个存储函数来获取一个名为 budget 的参数。该函数应 return 字符串 'LOW' 预算小于或等于 500000,'MID' 预算小于或等于 850000,'HIGH' 预算小于或等于 1200000,'ULTRA' 预算超过 1200000。但我收到一个对我来说意义不大的错误。
这是我的函数:
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
谁能帮我看看这是什么意思?
过程没有 return 任何值,函数有。
尝试:
create function f_rating(budget int)
as
而不是
create procedure f_rating(budget int)
as
CREATE FUNCTION funcname [ ( [ <in_params> ] ) ]
RETURNS <domain_or_non_array_type> [COLLATE collation]
[DETERMINISTIC]
<module-body>
所以你犯了两个错误,你使用 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 #