我正在尝试从学生表中输入一个学生ID来判断他们是否通过了module_grades表,但是当我输入学生ID时我会继续收到该错误,任何人都可以帮助,谢谢 这是我的代码:
set serverouput on
DECLARE
Student Students.Sid%type:='&sid';
decision MODULE_GRADES.MDECISION%type;
BEGIN
SELECT MDECISION INTO decision FROM MODULE_GRADES
WHERE Sid = Student;
IF
(decision = 'Pass')
Then
DBMS_OUTPUT.PUT_LINE('You got'||Decision||' congratulations');
END IF;
END;
答案 0 :(得分:2)
您收到错误,因为SELECT INTO
至少返回两行。在PL / SQL中SELECT INTO
must return exactly one row,不多也不少。
使用SELECT INTO
时,您应该通过保证唯一性的条件组合查询表 - 通常是主键。在您的情况下,您可能缺少过滤器,或者数据中存在异常。
如果您期望可能有多行的情况,您应该:
使用循环:
FOR cc IN (SELECT DECISION FROM MODULE_GRADES WHERE Sid = Student) LOOP
-- do something
END LOOP;
或捕获异常
BEGIN
SELECT MDECISION INTO decision
FROM MODULE_GRADES
WHERE Sid = Student;
-- do something
EXCEPTION
WHEN TOO_MANY_ROWS THEN
-- do something else
END;