Twój problem polega na tym, że parametr wejściowy ma taką samą nazwę jak kolumna, więc gdy zapytanie zobaczy
WHERE SCOTT.EMP.DEPTNO = deptno
interpretuje deptno jako SCOTT.EMP.DEPTNO , co oznacza, że jest prawdziwe dla wszystkich wartości deptno . Zmień nazwę parametru wejściowego, a zapytanie będzie działać zgodnie z oczekiwaniami.
Powinieneś także użyć NVL aby upewnić się, że poszczególne SUM wartości nie są NULL , tak jakby którykolwiek z nich był NULL co spowoduje, że ich suma będzie NULL jak również, tj.
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;