Su problema es que su parámetro de entrada tiene el mismo nombre que su columna, por lo que cuando la consulta ve
WHERE SCOTT.EMP.DEPTNO = deptno
interpreta deptno
como SCOTT.EMP.DEPTNO
, lo que significa que es cierto para todos los valores de deptno
. Cambie el nombre de su parámetro de entrada y la consulta funcionará como se espera.
También debe usar NVL
para asegurarse de que el SUM
individual los valores no son NULL
, como si alguno de ellos fuera NULL
eso hará que la suma de ellos NULL
también es decir,
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;