Я работаю над созданием функции pl / sql, которая находит наибольшее среднее количество студентов из списка классов. У меня средняя часть вычислений работает правильно;Однако мне нужно вернуть результаты в виде таблицы записей, и я сталкиваюсь с ошибкой при попытке сохранить результаты в записи.
Моя декларация записи выглядит следующим образом
create or replace TYPE studentRec as object (
term varchar2(10),
lineNum number(4),
coTitle varchar2(50),
stuId varchar2(5),
average number);
Ошибка возникает, когда я пытаюсь заполнить запись с помощью оператора select into
.
create or replace function highest_avg(stu_id scores.sid%type,
line_no scores.lineno%type)
return stuRecTab
as
stuRec stuRecTab;
average number;
studentRec_t studentRec;
begin
stuRec := stuRecTab();
select avg(points)
into average
from scores, courses
where scores.sid = stu_id
and scores.lineno = line_no
and scores.term = courses.term
and scores.lineno = courses.lineno;
SELECT DISTINCT c.term, c.lineno, cc.ctitle, s.sid, average
INTO studentRec_t
from courses c, class_catalog cc, scores s
where s.sid = stu_id
and s.lineno = line_no
and s.term = c.term
and s.lineno = c.lineno
and c.cno = cc.cno;
stuRec := studentRec_t;
return(stuRec);
end;
IЯ запустил его как запрос, и я получаю то, что ожидал, поэтому я не уверен, почему эта ошибка появляется. Любая помощь будет принята с благодарностью, так как я впервые работаю с pl / sql.