Oracle
 sql >> база данни >  >> RDS >> Oracle

Oracle [Процедура] - Функцията Sum игнорира клаузата WHERE

Вашият проблем е, че вашият входен параметър има същото име като вашата колона, така че когато заявката види

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;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Проверете дали таблицата съществува или не, преди да я създадете в Oracle

  2. Oracle - Използване на индекс с незадължителни параметри

  3. Функция Oracle NULLIF().

  4. Oracle нулева проверка за поле за низ

  5. cx_Oracle „ORA-01843:невалиден месец“ с параметър unicode