Oracle
 sql >> Database >  >> RDS >> Oracle

Oracle [Procedura] - La funzione Sum ignora la clausola WHERE

Il tuo problema è che il tuo parametro di input ha lo stesso nome della tua colonna, quindi quando la query vede

WHERE SCOTT.EMP.DEPTNO = deptno

interpreta deptno come SCOTT.EMP.DEPTNO , il che significa che è vero per tutti i valori di deptno . Modifica il nome del parametro di input e la query funzionerà come previsto.

Dovresti anche usare NVL per garantire che il singolo SUM i valori non sono NULL , come se uno dei due fosse NULL che ne farà la somma NULL pure cioè

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;