Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle [Procedure] - Summenfunktion ignoriert WHERE-Klausel

Ihr Problem ist, dass Ihr Eingabeparameter den gleichen Namen wie Ihre Spalte hat, also wenn die Abfrage

sieht
WHERE SCOTT.EMP.DEPTNO = deptno

es interpretiert deptno als SCOTT.EMP.DEPTNO , was bedeutet, dass es für alle Werte von deptno wahr ist . Ändern Sie den Namen Ihres Eingabeparameters und die Abfrage funktioniert wie erwartet.

Sie sollten auch NVL verwenden um sicherzustellen, dass die individuelle SUM Werte sind nicht NULL , als wäre einer von ihnen NULL das wird die Summe von ihnen zu NULL machen auch d.h.

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;