問題は、入力パラメータの名前が列と同じであるため、クエリが表示されたときに
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;