Liz*_*zie 3 sql oracle plsql oracle10g
我应该根据程序将学生成绩更新为“ A”
ChangeGrade(p_sID, p_classID)
Run Code Online (Sandbox Code Playgroud)
如果学生未注册该课程(p_classID),则会显示一条错误消息。
表格如下:
报名
sID classID Grade
*** ******* *****
104 10440 B
102 10220 C
... ..... .
Run Code Online (Sandbox Code Playgroud)
我应该进行内部联接吗?这是我所拥有的:
Create or Replace ChangeGrade (
p_sID enrolling.sID%type
p_classID enrolling.classID%type )
AS
p_id_enrolled NUMBER;
BEGIN
SELECT sID into p_id_enrolled
FROM Enrolling
WHERE sID = p_sID
AND classID = p_classID
IF p_sID = p_id_enrolled THEN
update Enrolling
set GRADE = 'A'
dbms_output.put_line('Student grade has been changed.')
ELSE
dbms_output.put_line('Student record does not exist.')
END IF;
END;
/
Run Code Online (Sandbox Code Playgroud)
Create or Replace procedure ChangeGrade (
p_sID enrolling.sID%type
p_classID enrolling.classID%type )
AS
BEGIN
update Enrolling
set GRADE = 'A'
where sID = p_sID
AND classID = p_classID;
IF SQL%ROWCOUNT > 0 THEN
dbms_output.put_line('Student grade has been changed.');
ELSE
dbms_output.put_line('Student record does not exist.');
END IF;
END;
Run Code Online (Sandbox Code Playgroud)