Oracle
 sql >> Base de données >  >> RDS >> Oracle

Oracle [Procédure] - La fonction Somme ignore la clause WHERE

Votre problème est que votre paramètre d'entrée a le même nom que votre colonne, donc quand la requête voit

WHERE SCOTT.EMP.DEPTNO = deptno

il interprète deptno comme SCOTT.EMP.DEPTNO , ce qui signifie qu'il est vrai pour toutes les valeurs de deptno . Changez le nom de votre paramètre d'entrée et la requête fonctionnera comme prévu.

Vous devez également utiliser NVL pour s'assurer que le SUM individuel les valeurs ne sont pas NULL , comme si l'un d'eux était NULL qui en fera la somme NULL ainsi c'est-à-dire

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;