Sql ORA-01422:exact fetch返回的行数超过触发器的请求行数)

Sql ORA-01422:exact fetch返回的行数超过触发器的请求行数),sql,oracle,ora-01422,Sql,Oracle,Ora 01422,我已经厌倦了制造这样的触发器, 但它显示了此错误此错误表示您的查询将DNAME选择为DeptName…返回多条记录,因此其结果不能指定给标量变量。查询的问题是,您在购买上有一个不必要的加入,因此它会为刚刚完成当前销售的员工执行的每个销售返回一条记录 我相信你的问题可以简化如下: SELECT d.dname INTO DeptName FROM emp e INNER JOIN dept d ON e.deptno = d.deptno WHERE e.empno = :NEW.servedby

我已经厌倦了制造这样的触发器,
但它显示了此错误

此错误表示您的查询
将DNAME选择为DeptName…
返回多条记录,因此其结果不能指定给标量变量。查询的问题是,您在
购买
上有一个不必要的
加入
,因此它会为刚刚完成当前销售的员工执行的每个销售返回一条记录

我相信你的问题可以简化如下:

SELECT d.dname INTO DeptName
FROM emp e
INNER JOIN dept d ON e.deptno = d.deptno
WHERE e.empno = :NEW.servedby;

此错误表示您的查询
SELECT DNAME INTO DeptName…
返回多条记录,因此其结果不能分配给标量变量。查询的问题是,您在
购买
上有一个不必要的
加入
,因此它会为刚刚完成当前销售的员工执行的每个销售返回一条记录

我相信你的问题可以简化如下:

SELECT d.dname INTO DeptName
FROM emp e
INNER JOIN dept d ON e.deptno = d.deptno
WHERE e.empno = :NEW.servedby;

此错误表示您的查询
将DNAME选择为DeptName…
返回多条记录。你想如何处理这件事?我想看看这件事是否由“销售-阳光”部门处理。如果新行的员工在“SALES-Sunshine”工作,那么请执行以下操作:员工是否可能在多个部门工作?否。该员工仅在一个部门工作您不能在
采购
的行级触发器内查询
采购
,因此我不确定您为什么没有得到一个变异表错误。我怀疑上的
internal JOIN PURCHASE应该是
where
。此错误表示您的查询
SELECT DNAME INTO DeptName…
返回多条记录。你想如何处理这件事?我想看看这件事是否由“销售-阳光”部门处理。如果新行的员工在“SALES-Sunshine”工作,那么请执行以下操作:员工是否可能在多个部门工作?否。该员工仅在一个部门工作您不能在
采购
的行级触发器内查询
采购
,因此我不确定您为什么没有得到一个变异表错误。我怀疑
上的
internal JOIN PURCHASE应该是
where