sql >> Databasteknik >  >> RDS >> Oracle

Oracle [Procedur] - Summafunktionen ignorerar WHERE-satsen

Ditt problem är att din indataparameter har samma namn som din kolumn, så när frågan ser

WHERE SCOTT.EMP.DEPTNO = deptno

den tolkar deptno som SCOTT.EMP.DEPTNO , vilket betyder att det är sant för alla värden i deptno . Ändra namnet på din indataparameter så fungerar frågan som förväntat.

Du bör också använda NVL för att säkerställa att den individuella SUM värden är inte NULL , som om någon av dem är NULL som gör summan av dem NULL likaså, dvs.

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;



  1. Förstå DROP TABLE-satsen i SQL Server

  2. MySql - Problem med att skapa vy

  3. Hur man skapar användare i Oracle Multitenant 12c utan C## prefix

  4. Hur COLLATION() fungerar i MariaDB