Vấn đề của bạn là tham số đầu vào của bạn có cùng tên với cột của bạn, vì vậy khi truy vấn thấy
WHERE SCOTT.EMP.DEPTNO = deptno
nó diễn giải deptno dưới dạng SCOTT.EMP.DEPTNO , nghĩa là nó đúng với tất cả các giá trị của deptno . Thay đổi tên của tham số đầu vào của bạn và truy vấn sẽ hoạt động như mong đợi.
Bạn cũng nên sử dụng NVL để đảm bảo rằng SUM riêng lẻ các giá trị không phải là NULL , như thể một trong số chúng là NULL điều đó sẽ làm cho tổng của chúng NULL cũng vậy, tức là
select NVL(SUM(SAL), 0) INTO SALSUM FROM SCOTT.EMP WHERE SCOTT.EMP.DEPTNO = numerdept;
select NVL(SUM(COMM), 0) INTO COMMSUM FROM SCOTT.EMP WHERE SCOTT.EMP.DEPTNO = numerdept;