Ditt problem är att din indataparameter har samma namn som din kolumn, så när frågan ser
WHERE SCOTT.EMP.DEPTNO = deptno
den tolkar deptno som SCOTT.EMP.DEPTNO , vilket betyder att det är sant för alla värden i deptno . Ändra namnet på din indataparameter så fungerar frågan som förväntat.
Du bör också använda NVL för att säkerställa att den individuella SUM värden är inte NULL , som om någon av dem är NULL som gör summan av dem NULL likaså, dvs.
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;