【发布时间】:2019-04-22 16:33:17
【问题描述】:
我正在尝试编写一个存储过程。我需要使用一个 id 来获取学院 ID。ID 是唯一的,但是当我尝试获取学院 ID 时,我得到了错误:精确获取返回的行数超过了请求的行数.
我在 oracle 社区和堆栈溢出检查了许多类似的问题,但没有得到任何正确的答案
我的存储过程如下;
CREATE OR REPLACE PROCEDURE updateStatus(id IN int)
IS
facid varchar2(10);
total_count int;
accepted_count int;
rejected_count int;
design varchar2(25);
BEGIN
SELECT facultyid INTO facid FROM TEMP_LEAVE_DETAILS WHERE id=id;
SELECT design INTO design FROM FACULTY WHERE facultyid=facid;
SELECT COUNT(*) INTO total_count FROM CLASS_ADJUST WHERE id=id;
SELECT COUNT(*) INTO accepted_count FROM CLASS_ADJUST WHERE id=id AND
accepted='Accepted';
SELECT COUNT(*) INTO rejected_count FROM CLASS_ADJUST WHERE id=id AND
accepted='Rejected';
IF(total_count=accepted_count) THEN
IF design='hod' THEN
UPDATE TEMP_LEAVE_DETAILS SET appr_by='Principal' WHERE id=id;
ELSE
UPDATE TEMP_LEAVE_DETAILS SET appr_by='HOD' WHERE id=id;
END IF;
END IF;
END;
执行过程时出现此错误:
开始更新状态(23);结束;
*
第 1 行出现错误:
ORA-01422:精确提取返回的行数超过了请求的行数
ORA-06512:在“SYSTEM.UPDATESTATUS”第 9 行
ORA-06512:在第 1 行
请通过一些解决方案帮助我解决此错误,如果可能,请解释为什么这不起作用 提前致谢
【问题讨论】:
-
前两个查询返回多少行?超过 1 个?
-
重命名参数,就没有问题了。