Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Oracle [Procedure] - A função Sum ignora a cláusula WHERE


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;