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

Oracle [Procedure] - Sum-funktionen ignorerer WHERE-sætning

Dit problem er, at din inputparameter har samme navn som din kolonne, så når forespørgslen ser

WHERE SCOTT.EMP.DEPTNO = deptno

den fortolker deptno som SCOTT.EMP.DEPTNO , hvilket betyder, at det er sandt for alle værdier af deptno . Skift navnet på din inputparameter, og forespørgslen vil fungere som forventet.

Du bør også bruge NVL for at sikre, at den enkelte SUM værdier er ikke NULL , som om en af ​​dem er NULL det vil gøre summen af ​​dem NULL også, dvs.

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;



  1. Sådan indsættes i temp-tabellen, når du går gennem en streng - Oracle - PL/SQL

  2. PostgreSQL vs. Linux-kerneversioner

  3. Hvordan opretter jeg en postgresql-bruger med stof

  4. Hvorfor bruger MySQL ikke optimale indekser