-- Connect programmer/p@9i

set serveroutput on

drop function Get_Grade1;
drop function Get_Grade2;


create or replace function Get_Grade1(score IN NUMBER) RETURN VARCHAR2 is
begin
  -- use a Searched CASE Statement to find the Grade for the 
  -- score passed in as a parameter
  CASE 
    WHEN score BETWEEN 80 AND 100 THEN

      dbms_output.put_line('Between 80 and 100');
      return 'A';
    WHEN score BETWEEN 65 AND 79  THEN
      dbms_output.put_line('Between 65 and 79');
      return 'B';
    WHEN score BETWEEN 50 AND 64  THEN
      dbms_output.put_line('Between 50 and 64');

      return 'C';
    WHEN score BETWEEN 40 AND 49  THEN
      dbms_output.put_line('Between 40 and 49');
      return 'D';
    WHEN score BETWEEN 0  AND 39  THEN
      dbms_output.put_line('Between 0 and 39');
      return 'F';
    ELSE

      return 'Invalid score';
  END CASE;
end Get_Grade1;
/
Show Errors

begin
  dbms_output.put_line(Get_Grade1(75));
end;

/

create or replace function Get_Grade2(score IN NUMBER) RETURN VARCHAR2 is
  grade VARCHAR2(15);
begin
  -- use a Searched CASE Expression to return the grade for
  -- the score value passed in 
  grade := CASE 
             WHEN score BETWEEN 80 AND 100 THEN 'A'
             WHEN score BETWEEN 65 AND 79  THEN 'B'

             WHEN score BETWEEN 50 AND 64  THEN 'C'
             WHEN score BETWEEN 40 AND 49  THEN 'D'
             WHEN score BETWEEN 0  AND 39  THEN 'F'
             ELSE 'Invalid score'
           END;
  return grade;
end Get_Grade2;
/
Show Errors

select Get_Grade2(90) from dual

/