Seu problema é que seu parâmetro de entrada tem o mesmo nome da sua coluna, então quando a consulta vir
WHERE SCOTT.EMP.DEPTNO = deptno
ele interpreta
deptno
como SCOTT.EMP.DEPTNO
, o que significa que é verdadeiro para todos os valores de deptno
. Altere o nome do seu parâmetro de entrada e a consulta funcionará conforme o esperado. Você também deve usar
NVL
para garantir que o SUM
individual os valores não são NULL
, como se qualquer um deles fosse NULL
que fará a soma deles NULL
também ou seja 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;