1

I am trying to create a stored function to take one parameter called budget. The function should return the string 'LOW' for a budget less than or equal to 500000, 'MID' for a budget less than or equal to 850000, 'HIGH' for a budget less than or equal to 1200000, and 'ULTRA' for a budget above 1200000. But I am getting an error that doesn't make much sense to me.

Here is my function:

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 #

I am still new to sql, so this syntax is based on examples online and such. Here is my error:

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

Can anyone help me figure out what this means?

Mark Rotteveel
  • 100,966
  • 191
  • 140
  • 197
Austin
  • 93
  • 1
  • 8

2 Answers2

1

procedure does not return any value, functions do.

Try:

create function f_rating(budget int) 
as

instead of

create procedure f_rating(budget int) 
as
Bhavesh Ghodasara
  • 1,981
  • 2
  • 15
  • 29
1

The syntax for stored function is

CREATE FUNCTION funcname [ ( [ <in_params> ] ) ]
  RETURNS <domain_or_non_array_type> [COLLATE collation]
  [DETERMINISTIC]
  <module-body>

So you have made two mistakes, you use procedure instead of function and you miss the RETURNS <type> part. Try

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 #
Mark Rotteveel
  • 100,966
  • 191
  • 140
  • 197
ain
  • 22,394
  • 3
  • 54
  • 74