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;