Oracle 尝试创建PL/SQL过程时出现ORA-06550错误
有些东西坏了,但我不知道我错过了什么Oracle 尝试创建PL/SQL过程时出现ORA-06550错误,oracle,plsql,Oracle,Plsql,有些东西坏了,但我不知道我错过了什么 select grade.sectionid, grade.studentid, course.courseid FROM section INNER JOIN grade ON grade.sectionid = section.sectionid INNER JOIN course ON course
select
grade.sectionid,
grade.studentid,
course.courseid
FROM section
INNER JOIN grade
ON grade.sectionid = section.sectionid
INNER JOIN course
ON course.courseid = section.courseid;
DECLARE
CURSOR mycursor is
select
sectionid, studentid, courseid, coursename
FROM grade, course, section;
var_secID NUMBER(10);
var_studentID NUMBER (10);
var_gradeLetter CHAR(1);
var_coursetitle VARCHAR2(25);
BEGIN
OPEN mycursor;
LOOP
FETCH mycursor
INTO var_secID, var_studentID, var_gradeLetter, var_coursetitle;
EXIT WHEN mycursor%NOTFOUND;
If var_coursetitle(coursename,1) BETWEEN A AND F then
UPDATE grade
SET grade = 'A'
WHERE sectionid;
END IF;
END LOOP;
CLOSE mycursor;
END;
/
继续获取此错误:
第21行错误:
ORA-06550:第21行第18列:
PL/SQL:ORA-00920:无效的关系运算符
ORA-06550:第19行第4列:
PL/SQL:SQL语句被忽略
BETWEEN A AND F then
或许应该是:
BETWEEN 'A' and 'F' then
您可以在不使用任何PL/SQL的情况下执行此操作,如下所示:
update grade g set grade = 'A'
where g.sectionid in
( select s.sectionid from section s
join course c on c.courseid = s.courseid
where substr(c.coursename,-1, 1) between 'A' and 'F' );
但是,作为PL/SQL学习练习,您可以不使用任何变量或游标管理:
begin
for r in (
select g.sectionid, g.studentid, c.courseid, c.coursename
, substr(c.coursename,-1, 1) as course_lastchar
from grade g
join section s on s.sectionid = g.sectionid
join course c on c.courseid = s.courseid
for update of grade
)
loop
if r.course_lastchar between 'A' and 'F' then
update grade set grade = 'A' where sectionid = r.sectionid;
end if;
end loop;
end;
(顺便说一句,有必要养成以一致的缩进大小整齐排列代码的习惯。)光标定义中的连接
。。。。。。。从年级、课程、部门代码>创建三个表的交叉联接(从这三个表中生成所有行的所有可能组合),因此我不太确定您希望使用此查询实现什么。我创建了一个触发器以将成绩填充到我的成绩表中。我希望该程序能查看学生课程名称的最后一个字母,并根据最后一个字母分配分数(a-F)。这有助于澄清问题吗?(这是我第一次使用数据库或SQL,所以我还是一个新手,正在努力解决问题)。最后,你有了。。。更新等级。。。其中sectionid代码>这是什么意思?我在哪里什么?这里缺少了一些内容。正如mathguy提到的,编译器希望在where sectionid
后面有一个关系运算符,例如where sectionid=var\u secID
。