错误消息-PLS-00103:在预期以下情况之一时遇到符号"LOOP":如果



我正试图创建一个更新学生成绩的过程,并将成绩插入成绩表中。我从另一张桌子,课程表中提取,以获取我需要的信息。如果课程名称以某个字母结尾,则会分配一个分数,然后将其插入成绩表中的"成绩"中。这是我的:

create or replace procedure grade is
assign_grade varchar2(1);
assign_class varchar2(30);
cursor c1 is
select course_name from course;
begin
for assign_class in c1
loop
if (assign_class.course (substr(course_name, -1, 1) between 'A' and 'F')) then
assign_grade.grades :='A';
else if
(assign_class.course (substr(course_name, -1, 1) between 'G' and 'K')) then assign_grade.grades :='B';
else if
(assign_class.course (substr(course_name, -1, 1) between 'L' and 'P')) then assign_grade.grades :='C';
else if
(assign_class.course (substr(course_name, -1, 1) between 'Q' and 'T')) then assign_grade.grades :='D';
else if
assign_class.course (substr(course_name, -1, 1) between 'U' and 'Z')) then assign_grade.grades :='E';
end if;
end loop;
dbms_output.put_line('students grade is: ' || s_grade);
end;

我的问题是我在标题中发布了错误消息。我的循环有问题,但我无法确定是什么。我不确定我是否没有在外观中正确插入数据,这就是问题所在。

感谢您的帮助。谢谢

else-if语法错误。

CREATE OR REPLACE PROCEDURE grade
IS
assign_grade varchar2(1);
assign_class varchar2(30);
CURSOR c1 is
select course_name from course;
BEGIN
FOR assign_class in c1
LOOP
IF
(assign_class.course (Substr(course_name, -1, 1) between 'A' and 'F')) THEN assign_grade.grades :='A';
ELSIF
(assign_class.course (Substr(course_name, -1, 1) between 'G' and 'K')) THEN
assign_grade.grades :='B';
ELSIF
(assign_class.course (Substr(course_name, -1, 1) between 'L' and 'P')) THEN
assign_grade.grades :='C';
ELSIF
(assign_class.course (Substr(course_name, -1, 1) between 'Q' and 'T')) 
THEN
assign_grade.grades :='D';
ELSIF
assign_class.course (Substr(course_name, -1, 1) between 'U' and 'Z')) 
THEN
assign_grade.grades :='E';

END IF;
END LOOP;
DBMS_OUTPUT.PUT_LINE('students grade is: ' || s_grade);
END;

相关内容

最新更新