Эта ошибка указывает, что ваш запрос SELECT DNAME INTO DeptName ...
возвращает более одной записи, поэтому его результат не может быть присвоен скалярной переменной. Проблема с вашим запросом состоит в том, что у вас есть ненужный JOIN
на purchase
, поэтому он возвращает одну запись для каждой продажи, совершенной сотрудником, который только что совершил текущую продажу.
Я считаю, что ваш запрос можетбыть упрощенным следующим образом:
SELECT d.dname INTO DeptName
FROM emp e
INNER JOIN dept d ON e.deptno = d.deptno
WHERE e.empno = :NEW.servedby;