sql >> Base de Datos >  >> RDS >> Oracle

Oracle [Procedimiento]:la función Sum ignora la cláusula WHERE

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;