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;