Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Oracle [Procedura] - Funkcja Sum ignoruje klauzulę WHERE

Twój problem polega na tym, że parametr wejściowy ma taką samą nazwę jak kolumna, więc gdy zapytanie zobaczy

WHERE SCOTT.EMP.DEPTNO = deptno

interpretuje deptno jako SCOTT.EMP.DEPTNO , co oznacza, że ​​jest prawdziwe dla wszystkich wartości deptno . Zmień nazwę parametru wejściowego, a zapytanie będzie działać zgodnie z oczekiwaniami.

Powinieneś także użyć NVL aby upewnić się, że poszczególne SUM wartości nie są NULL , tak jakby którykolwiek z nich był NULL co spowoduje, że ich suma będzie NULL jak również, tj.

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Funkcja CHARTOROWID() w Oracle

  2. dlaczego zapytanie trwa zbyt długo

  3. Klient zarządzany C# NHibernate i Oracle

  4. Jak dodać ograniczenie w Oracle SQL, aby ograniczyć wartość?

  5. Regex, aby usunąć słowa z czarnej listy ze zdania