Вашият проблем е, че вашият входен параметър има същото име като вашата колона, така че когато заявката види
WHERE SCOTT.EMP.DEPTNO = deptno
той интерпретира deptno
като SCOTT.EMP.DEPTNO
, което означава, че е вярно за всички стойности на deptno
. Променете името на вашия входен параметър и заявката ще работи според очакванията.
Трябва също да използвате NVL
за да се гарантира, че отделният SUM
стойностите не са NULL
, сякаш някой от тях е NULL
което ще направи сбора им NULL
както и т.е.
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;