CREATE FUNCTION get_term_gpa(
pid IN ENROLLMENTS.STUDENT_ID%TYPE,
yrtrm IN ENROLLMENTS.SEMESTER%TYPE
) RETURN NUMBER
IS
v_gpa ENROLLMENTS.GRADE_POINTS%TYPE;
BEGIN
SELECT COALESCE(AVG(grade_points), 0)
INTO v_gpa
FROM enrollments
WHERE student_id = pid
AND semester = yrtrm;
RETURN v_gpa;
END;
/
1条答案
按热度按时间jmo0nnb31#
你的错误是你
SELECT
一个表达式SUM(grade_points)/COUNT(*)
,但你试图把一件事INTO
两个变量。您可能希望将其更改为:但是,很多函数是不必要的(例如
v_total
,GROUP BY
子句和v_total_rows
也是不必要的,如果你使用AVG
而不是SUM
),你可以简化为: