创建的函数有编译错误

The function created with compilation errors

我无法成功编译此 PL/SQL 存储函数。找不到正确的方法..

CREATE OR REPLACE FUNCTION calGrade
    (
    cmark IN student.mark%TYPE
    )
    RETURN VARCHAR2
    IS
        comment VARCHAR2(10);
    BEGIN
        IF cmark := 1 THEN comment := 'Very Poor';
        ELSIF cmark := 2 THEN comment := 'Poor';
        ELSIF cmark := 3 THEN comment := 'Moderate';
        ELSIF cmark := 4 THEN comment := 'Good';   
        ELSIF cmark := 5 THEN comment := 'Excellent';
    END IF;
    RETURN comment;
    END;
    /

从所有 IF 中删除冒号。

SQL> CREATE OR REPLACE FUNCTION calGrade (cmark IN student.mark%TYPE)
  2     RETURN VARCHAR2
  3  IS
  4     comment  VARCHAR2 (10);
  5  BEGIN
  6     IF cmark = 1
  7     THEN
  8        comment := 'Very Poor';
  9     ELSIF cmark = 2
 10     THEN
 11        comment := 'Poor';
 12     ELSIF cmark = 3
 13     THEN
 14        comment := 'Moderate';
 15     ELSIF cmark = 4
 16     THEN
 17        comment := 'Good';
 18     ELSIF cmark = 5
 19     THEN
 20        comment := 'Excellent';
 21     END IF;
 22
 23     RETURN comment;
 24  END;
 25  /

Function created.

SQL>

使用 case 表达式怎么样?

comment := (CASE cmark
                WHEN 1 THEN 'Very Poor'
                WHEN 2 THEN 'Poor'
                WHEN 3 THEN 'Moderate'
                WHEN 4 THEN 'Good'
                WHEN 5 THEN 'Excellent'
            END);