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;