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