PL / SQL编写更新列的过程?

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)

Mik*_*ike 5

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)